【问题标题】:Server not replying message to client in java服务器没有在java中向客户端回复消息
【发布时间】:2015-10-16 15:09:36
【问题描述】:

我对 java socket 程序很陌生,我正在做一个客户端服务器程序并遇到一些问题,因为我的客户端无法接收服务器消息,我认为问题来自服务器,这里是部分我认为包含错误的服务器程序

if((input.readUTF()) != null){
    output.writeUTF("Welcome my client");  // display the message to client 
    output.flush();
    output.close();
}

我正在使用 CMD 测试我的程序,当我运行客户端程序并单击加入按钮(btn1)时,“服务器:客户端连接到”..“这是/是”.. ...“在服务器中”消息弹出,然后是“服务器:.......”你是\t“.....”消息。当我检查我的客户程序时,它就这样挂了。

“欢迎我的客户”消息应该被发送回客户端,一旦客户端收到消息,它将显示更多按钮,我查看了许多在线资源,其中一些显示 BufferedReader 和 PrintWriter 正在使用或 wirteBytes /readBytes 函数。所以我不知道我的错误在哪里?

http://codepad.org/iw17uwoJ
这是我的客户端程序
http://codepad.org/oNRohEXp
这是我的服务器程序

【问题讨论】:

  • 有问题的代码,请。链接过时了,因此对未来的观众来说失去了所有价值。
  • 如果您在一端使用readUTf()/writeUTf(),那么您也必须在另一端使用它,而不是 Readers 和 Writers。注意readUTF() 不返回空值。你为什么要测试它?
  • 所以你的意思是我的客户端程序也需要一个 writeUTF,因为我发现我的程序中没有这个东西而且我的客户端无法发布服务器输出?
  • “你必须在另一端也使用它”的哪一部分你不明白吗?

标签: java sockets client server


【解决方案1】:

为了从客户端向服务器端获取响应,数据将从客户端发送。在客户端 MyNoteCenter.java 类中添加简单代码。

try
    {
      Socket s = new Socket("127.0.0.1", 8888);
      DataInputStream input = new DataInputStream(s.getInputStream()); 
      DataOutputStream output = new DataOutputStream(s.getOutputStream());    
      output.writeUTF(tf1.getText() + " & " + tf2.getText());
      String word = input.readUTF(); 
      System.out.println("word=" + word);
      JOptionPane.showMessageDialog(null, word);    
      output.flush();
      output.close();
      s.close();

    }
        catch(IOException exp)
        {
            JOptionPane.showMessageDialog(null,"Client : Can't Connect To Server, Please Try Again");
        }  

【讨论】:

  • 嗨,rafiq,我尝试根据您的建议更改我的代码,但它仍然没有给我任何回应。更改后我需要向您展示我的代码吗?我不确定
  • 我检查了你的代码。没有问题。首先运行服务器然后运行客户端。
  • 在客户端面板中输入用户名和ID,然后点击加入。
  • 谢谢你,你太好了,你完全解决了我的问题。我学到了一些新东西,上帝保佑你
  • 问。 word 怎么会是空的?答:不能。因此,此代码的一部分无法访问,因此未经测试。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-19
  • 2014-11-29
  • 2015-08-08
  • 2016-07-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多