日期:2014-05-20  浏览次数:20699 次

请教这样一个现象:C连接Java程序Socket问题
我现有这样一个程序,客户端用C写,服务端用Java写,Java端采用线程,在线程开始之前用ServerSocket监听端口,在线程体里面用socket.accpet()阻塞等待连接,C端连接成功后提示发送数据成功,可是Java端一直阻塞在BufferReader   socketReader.readline()这里,直到手动kill掉C端进程后,Java端才显示接收到的数据,请问这是一个什么样的情况?有没有什么解决办法?

------解决方案--------------------
没有判断什么时候传递结束,以前遇到过这种问题
------解决方案--------------------
public class Client {
static Socket server;

public static void main(String[] args) throws Exception {
server = new Socket( "135.64.160.139 ", 5678);
BufferedReader in = new BufferedReader(new InputStreamReader(server
.getInputStream()));
PrintWriter out = new PrintWriter(server.getOutputStream());
BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));

while (true) {
String str = wt.readLine();
out.println(str);
out.flush();
if (str.equals( "end ")) {
break;
}
System.out.println(in.readLine());
}
server.close();
}

}
参考这个程序改一下,这是以前和c的socket联调过的的一个程序,没问题的
------解决方案--------------------
把readLine改成read几个字节看看好了