Java中的多线程TCP服务器不响应C中的TCP客户端
我正在尝试用Java测试一个多线程TCP MuxServer,其中一个TCP客户端用C编码。下面是管理与客户端通信的部分的代码:Java中的多线程TCP服务器不响应C中的TCP客户端,java,c,multithreading,tcpclient,tcpserver,Java,C,Multithreading,Tcpclient,Tcpserver,我正在尝试用Java测试一个多线程TCP MuxServer,其中一个TCP客户端用C编码。下面是管理与客户端通信的部分的代码: class Echo_TCP_Thread extends Thread { Socket Sock_Thr; public Echo_TCP_Thread (Socket The_Socket) { this.Sock_Thr = The_Socket; } public void run() { tr
class Echo_TCP_Thread extends Thread
{
Socket Sock_Thr;
public Echo_TCP_Thread (Socket The_Socket)
{
this.Sock_Thr = The_Socket;
}
public void run()
{
try
{
PrintWriter output = new PrintWriter(Sock_Thr.getOutputStream());
InputStreamReader input = new InputStreamReader(Sock_Thr.getInputStream());
BufferedReader binput = new BufferedReader(input);
//
System.out.println ("Test 1"); //This message is displayed
//
String temp;
while ((temp=binput.readLine()) != null)
{
//
System.out.println ("Test 2"); //This message is not displayed
//
output.print(this.getName() + " answer -> ");
output.println(temp);
output.flush();
System.out.println ("Child Server : " + Thread.currentThread()
+ " has received" + temp);
}
}
catch (Exception e)
{
return;
}
finally
{
try
{
Sock_Thr.close();
System.out.println
("Child Server " + Thread.currentThread() + " : End !!! ");
}
catch (IOException e)
{
}
}
}
}
即使我获得了连接,并且当我完成通信时结束消息显示在客户机中,客户机也不会从服务器接收回显消息。我已使用
测试消息检查程序在((temp=binput.readLine())!=null)
循环时没有进入,但连接到服务器后立即显示消息测试1
。我应该编写什么代码来更正此问题?这将是“等待对等方未发送的新行”。客户端和服务器之间的通信协议是什么?@Raedwald,这是Telnet。@MartinJames,while((temp=binput.readLine())!=null)
条件重复迭代,只要客户端没有发送null
字符?我不清楚为什么这个条件似乎不起作用…readLine()在收到一行之前不会返回-这是一个阻塞读取。行以换行符(或回车符、换行符)终止。无LF,无readLine()返回。这将是“等待对等方未发送的新行”。客户端和服务器之间的通信协议是什么?@Raedwald,这是Telnet。@MartinJames,while((temp=binput.readLine())!=null)
条件重复迭代,只要客户端没有发送null
字符?我不清楚为什么这个条件似乎不起作用…readLine()在收到一行之前不会返回-这是一个阻塞读取。行以换行符(或回车符、换行符)终止。没有LF,没有readLine()返回。