我在Java中,以下套接字服务器,套接字服务器读取
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MiddleSocket {
private ServerSocket middleman;
private int port = 1027;
private Socket client;
protected void createSocketServer()
{
try
{
middleman = new ServerSocket(port);
client = middleman.accept();
middleman.close();
PrintWriter out = new PrintWriter(client.getOutputStream(),true);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
while(true)
{
System.out.println("echo: " + in.readLine());
out.println("test");
}
}
catch(IOException e)
{
System.out.println(e);
}
}
}
它工作正常在它从客户端,一切是如何读取。不过,我想套接字服务器只尝试读取时,有来自客户端的消息,因为在循环它不断,即使没有来自客户端的消息被接收到该读输出一串
echo: null
是否有一些机制缺少wait()
让while循环知道坐下来等待,然后在从客户端发送消息读取该消息并且一旦读取该消息并且发送了答复时触发,然后仅仅坐下,直到收到来自客户端的下一条消息?
但是我希望循环不能退出,因为我希望Socket服务器始终运行。 – jgr208 2014-10-20 16:19:36
然后你应该循环'.accept'命令,该命令应该处理从连接客户端收到的任何输入,然后关闭连接并等待新连接。我会用一个例子来修改我的答案。 – WillBD 2014-10-20 16:21:20
编辑我的答案,以反映我上面提到的。当然要记住,它一次只能处理一个连接,但这是一个功能性示例。请注意,while(true)围绕代码的不同部分循环,这允许它接受无限数量的连接,但处理每个连接所花的时间有限,这正是您想要的。 – WillBD 2014-10-20 16:30:46