点亮城市
72.01 MB · 2026-02-05
说明:TCP是面向连接的,可靠的协议,连接前会通过三次握手确保已连接,断开连接前会通过四次握手,确认数据已全部接收才会断开连接,缺点是效率低(相对于UTP)。
在Java中,用Socket类创建客户端,ServerSocket类创建服务端
客户端:用Socket获取输出流对象,传输数据
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
public class ClientEssay {
public static void main(String[] args) throws IOException {
// 创建Socket对象,指定IP为本地IP,端口号10000
Socket socket = new Socket("127.0.0.1", 10000);
// 使用Socket获取输出流对象
OutputStream os = socket.getOutputStream();
// 发送数据
os.write("Hello".getBytes());
// 关闭通道
socket.close();
}
}
服务端:用Socket获取输入流对象,接收数据
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class ServerEssay {
public static void main(String[] args) throws IOException {
// 创建一个ServerSocket,指定端口号为10000
ServerSocket serverSocket = new ServerSocket(10001);
// 通过ServerSocket的端口号,接通客户端的Socket
Socket socket = serverSocket.accept();
// 使用Socket获取输入流对象
InputStream is = socket.getInputStream();
// 准备一个字节数组
byte[] bytes = new byte[1024];
// 读取数据
int len = is.read(bytes);
// 关闭通道
serverSocket.close();
// 将接收到的信息转换为字符串并打印
System.out.println(new String(bytes, 0, len));
}
}
同样,执行程序先执行服务端,再执行客户端。
另外,有两点需要注意:
(1)未接收到数据,服务端会在accept()处阻塞

(2)连接失败,客户端会报错(这是TCP和UTP的区别,UTP连接失败不会报错)

hezhongying.blog.csdn.net/article/det…