java - 客户端已连接,但无法向服务器发送消息。[控制台聊天]

标签 java networking chat

我尝试制作一个控制台聊天服务器。我面临的主要问题是我无法将消息发送到服务器..正如您在我上传的img中看到的,服务器和客户端已连接。但是当我在客户端输入任何内容时。客户端变得无响应,我必须关闭 cmd 提示符。 我怎样才能解决这个问题? my console chat

是我的电脑有问题还是代码有问题?

public class MyClient 
    {
    Socket s ;

    DataInputStream din ;
    DataOutputStream dout;


    public MyClient()
    {
    try
    {
    s= new Socket("localhost",10);

    System.out.println(s);
    din = new DataInputStream(s.getInputStream());

    dout= new DataOutputStream(s.getOutputStream());

    ClientChat();

    }
    catch(Exception e)
    {
    System.err.println(e);
    }
    }

    public void ClientChat() throws IOException
    {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    //Scanner s2 = new Scanner(System.in);
    String s1;
    System.out.println("start the conversation");
    do
    {
    s1=br.readLine();
    //s1=s2.nextLine();

    dout.flush();
    System.out.println("server:"+din.readUTF());
    }
    while(!s1.equals("stop"));
    }


    public static void main (String args[])
    {
    new MyClient();
    }

    }

最佳答案

  1. 代码片段从不调用dout.write*(),因此不会通过套接字发送任何内容。
  2. readLine() 将阻塞,直到读取一行文本,因此发送到客户端的消息只有在客户端键入第二行文本后才会打印。您可以通过使用异步 I/O 或将读取循环移至其自己的线程中来解决此问题。

关于java - 客户端已连接,但无法向服务器发送消息。[控制台聊天],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24929092/

相关文章:

ios - iOS 上长时间运行的请求

ios - 火力地堡和 swift : How to use another database for storing larger files?

java - 数组中单个加号的含义

java - 从 AWS Step Functions Activity 名称获取 ARN

java - jstat - 生产中的任何性能影响

Android 同一 Activity 的多个实例

javascript - 在 NodeJS 聊天应用程序中对齐消息

java - 使用冒泡排序排序 ArrayList<BigDecimal>

multithreading - 在 Linux 中使用多队列 NIC

javascript - Nodejs 未向服务器发送 syn 请求,错误 EHOSTUNREACH