【问题标题】:chat room using socket programming聊天室使用socket编程
【发布时间】:2010-10-18 16:25:38
【问题描述】:

我正在为聊天室编写程序 在客户端我写过

clientSocket = new Socket('127.0.0.1',5432);
socketInputBuffer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
socketOutputBuffer = new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
systemBuffer = new BufferedReader(new InputStreamReader(System.in));

在服务器端

sock = new ServerSocket(5432);

socketinputbuffersocketoutputbuffer 写在客户端

现在在上面的代码中,连接在服务器端正确建立后,我写入套接字流,我将在客户端读取。

但客户端等待服务器完成其写入。但是当我在服务器上使用shutdownoutput时它会写入并且客户端能够正确读取但是当客户端写入时会出现同样的问题。 所以我也在客户端使用了关机输出。因为这个我下次无法发送数据请建议我任何方法,以便客户端和服务器正常工作

我正在使用 [代码] socketOutputBuffer.write("输入你的名字"); socketOutputBuffer.flush(); [/代码] 还是不行。

【问题讨论】:

  • 5432 是 PostgreSQL 使用的默认端口 :-)

标签: java sockets


【解决方案1】:

这是一个快速的代码示例:

http://www.kieser.net/linux/java_server.html

【讨论】:

    【解决方案2】:

    要在不关闭连接的情况下向客户端发送数据,请在 BufferedWriter 上使用 flush 方法。 此外,您需要展示您是如何进行读/写的。您可能正在使用阻塞方法,在这种情况下,客户端将等待它从服务器接收到数据以在线程中进行。您可以将代码拆分为两个线程 - 一个写入服务器的线程和一个从服务器读取的线程,或者您可以使用 Java NIO。您可以使用this project 作为基准。

    【讨论】:

      【解决方案3】:

      尝试使用flush()方法在不关闭连接的情况下发送数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-21
        • 2021-12-04
        • 1970-01-01
        • 2019-12-08
        • 1970-01-01
        • 2019-09-22
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多