【发布时间】:2016-10-24 15:11:54
【问题描述】:
我有一个用 Java 编写的 TCP 服务器和一个用 Python 编写的客户端。 python 客户端仅发送 10 个数据包,每次发送之间等待 2 秒。但是,java 服务器似乎在 python 脚本终止之前无法识别数据包,它最终接收到所有消息,就好像它们同时进来一样。我用wireshark观看并验证客户端正确发送了所有数据包。
ServerSocket serverSocket = new ServerSocket(6789);
Socket clientSocket = null;
System.out.println ("Waiting for connection.....");
try {
clientSocket = serverSocket.accept();
}
catch (IOException e) {
System.err.println("Accept failed.");
System.exit(1);
}
System.out.println ("Connection successful");
System.out.println ("Waiting for input.....");
String data;
PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
BufferedReader in = new BufferedReader(
new InputStreamReader(clientSocket.getInputStream()));
while ((data = in.readLine()) != null) {
System.out.println ("Server: " + data);
}
Python 代码: 导入套接字 进口时间
TCP_IP = '192.168.1.127'
TCP_PORT = 6789
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((TCP_IP, TCP_PORT))
for i in range(10):
sock.send("Packet #: %s" % str(i))
time.sleep(2)
我看到的输出:
Connection successful
Waiting for input.....
Server: Packet: #: 0Packet: #: 1Packet: #: 2Packet: #: 3Packet: #: 4Packet: #: 5Packet: #: 6Packet: #: 7Packet: #: 8Packet: #: 9
【问题讨论】: