简单的套接字通信程序根本不起作用
Posted
技术标签:
【中文标题】简单的套接字通信程序根本不起作用【英文标题】:Simple socket communication program is not working at all 【发布时间】:2014-01-06 18:38:27 【问题描述】:服务器使用线程接受多个连接。
服务器:
@Override
public void run ()
try
System.out.println(client);
System.out.println("Client Connected");
//So far, so good. Client is connected
BufferedReader in = new BufferedReader(
new InputStreamReader(this.client.getInputStream()));
System.out.println(in.readLine());
// Nothing happens
catch (Exception e)
e.printStackTrace();
客户:
try
PrintWriter out = new PrintWriter(Client.socket.getOutputStream());
BufferedReader in = new BufferedReader (
new InputStreamReader(Client.socket.getInputStream()));
out.write("Information sent from client");
// Does not work
in.read();
// Before this .read it would give a "Connection reset" probably
// Because the client closed before the server could even read
没有错误,但它只是挂起,没有发送任何内容。防火墙已关闭,因此不可能那样。昨天它也曾经工作过。我不知道我会搞砸什么。
【问题讨论】:
有没有试过用net cat分别替换客户端和服务端,看看哪个好用?readline()
依赖于换行符,根据文档。你没有发送一个,所以它会阻塞并且永远不会返回。
【参考方案1】:
write
仅将内容写入InputStream
。使用println
发送一个额外的换行符以对应服务器上的readLine
语句。
out.println("Information sent from client");
【讨论】:
哦,所以没有换行符意味着服务器只是等到一个到来(这永远不会)?谢谢你。工作。以上是关于简单的套接字通信程序根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章