简单的套接字通信程序根本不起作用

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");

【讨论】:

哦,所以没有换行符意味着服务器只是等到一个到来(这永远不会)?谢谢你。工作。

以上是关于简单的套接字通信程序根本不起作用的主要内容,如果未能解决你的问题,请参考以下文章

PHP/Java 套接字通信不起作用

从不同线程在同一个套接字上发送和接收不起作用

最简单的形式根本不起作用[关闭]

AsyncTask和套接字在android java中不起作用

QTcpSocket 保持活动选项不起作用

Butterknife 在我的 Android 应用程序中根本不起作用