背景
Java实现TCP协议发送/接收数据。
实现
注:
- TCP协议需要三次握手以及四次挥手,因此在执行时需要先在Server端侦听端口。否则无法建立Client端与Server端的链接。
Client端
- package itheima2;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.net.Socket;
- import java.nio.charset.StandardCharsets;
- /*
- TCP协议发送数据的步骤:
- 1、创建客户端的Socket对象
- 2、获取输出流,写数据
- 3、释放资源
- */
- public class ClientDemo {
- public static void main(String[] args) throws IOException {
- //创建客户端的Socket对象
- Socket s = new Socket("10.2.120.65",10000); //实际应用中的IP及端口号
- //获取输出流,写数据
- OutputStream os = s.getOutputStream();
- os.write("Hello,World! TCP!".getBytes());
- //释放资源
- s.close();
- }
- }
Server端
- package itheima2;
- import java.io.IOException;
- import java.io.InputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- /*
- TCP协议接收数据的步骤:
- 1、创建服务器端的Socket对象(ServerSocket)
- 2、获取数据流,读数据,并把数据显示在控制台
- 3、释放资源
- */
- public class ServerDemo {
- public static void main(String[] args) throws IOException {
- //创建服务器端的Socket对象(ServerSocket)
- ServerSocket ss = new ServerSocket(10000); //此端口需要对应Client端的端口号,否则无法接收数据
- //Socket accept() 侦听要连接到此套接字并接收
- Socket s = ss.accept();
- //获取数据流,读数据,并把数据显示在控制台
- InputStream is = s.getInputStream();
- byte[] bys = new byte[1024];
- int len = is.read(bys);
- String data = new String(bys, 0, len);
- System.out.println("数据是:" + data);
- //释放资源
- ss.close();
- }
- }