-2

使用 Java 平台开发 C++ 服务器。堆栈一些小问题。希望任何人都可以在这里提供帮助

C++ 服务器代码片段

// Sample send a socket
sned(ConnectedSocket, classroomlist, strlen(classromlist), 0);

在 Java 客户端中

// Catch the socket
InputStreamReader isr = new InputStreamReader(socket.getInputStream());

char[] buffer = new char[3];

问题来了

  1. 如果我使用 BufferedReader,什么都没有读出。

  2. 我尝试使用

    while((x = inr.read(buffer)) != -1){}

, 在读取时堆栈到 while 循环中。(了解为什么 BufferedReader 没有输出)

  1. 我试着while(true){ SYstem.out.println(inr.read(buffer)) } 打印出每一轮阅读的所有长度。发现问题!像这样输出 vvvvvvvvvvv

    05-31 11:35:09.934: D/@@@(3264): 3 05-31 11:35:09.934: D/@@@(3264): 3 05-31 11:35:09.934: D/@ @@(3264): 3 05-31 11:35:09.934: D/@@@(3264): 2

InputStremaReader.read()假设return -1如果 tcp 包到达末尾。但是该函数只是在结束之前堆栈并等待等待等待gggggg。

4

1 回答 1

1

如果发送方从不关闭套接字,则接收方将永远无法获得流结束条件。

相反,如果接收方从未获得流结束条件,则结论必须是发送方永远不会关闭套接字。

于 2013-05-31T11:06:53.567 回答