Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 客户端已连接,但无法向服务器发送消息。[控制台聊天]_Java_Networking_Chat - Fatal编程技术网

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

Java 客户端已连接,但无法向服务器发送消息。[控制台聊天],java,networking,chat,Java,Networking,Chat,我试着制作一个控制台聊天服务器。我面临的主要问题是无法将消息发送到服务器。。正如你在我上传的img中看到的,服务器和客户端是连接的。但是当我在客户端键入任何内容时。客户端没有响应,我必须关闭cmd提示符。 我怎样才能解决这个问题 我的电脑有问题还是代码有问题 public class MyClient { Socket s ; DataInputStream din ; DataOutputStream dout; public MyClient(

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

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

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();
    }

    }
使用
dout.writeUTF(s1)
do循环内
。 writeUTF将允许您写入后续消息,直到它被卡在readutf功能


java.io.dataoutstream.writeUTF(String str)
方法使用修改的UTF-8编码将字符串写入底层输出流

您需要使服务器和客户端成为一个线程,以便它们可以独立工作

服务器作为线程将等待客户端连接并接收消息

客户端作为线程将自行工作

问题是它们不能同时运行

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

  • 你能在网上分享聊天系统工作的代码吗?参考此