背景
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();
}
}