一个关于Socket套接字的问题:
就是我用UDP编程写个聊天工具时,发现那聊天只能一边说一句,不知道为什么

解决方案 »

  1.   

    hehe,我瞎说几句啊  :D可能是你程序的问题,没有使用多线程,就一个线程,接收一段数据,显示出来,等待键盘输入,发送出去,然后再接收数据……
      

  2.   

    是的,Java的套介子是阻塞的,你要两个线程来做事情了。
      

  3.   

    不是的我是GUI的   就是类市QQ那样  有输入信息
    先是客户端发个信息  SERVER能收到
    但是  我在SERVER的聊天窗口中输入信息 再发送给Client  它怎么收不到了
      

  4.   

    确定你的Client端的线程仍然运行,如果运行,确定是否有进行数据接收
      

  5.   

    先发送 才能接收吧好象  Client的receive都写在 send后   不知道 为什么
      

  6.   

    可以吗???有代码吗??
     while(true)
                {
                    s.receive(dp);
                    String rcvd = new String(dp.getData(), 0, dp.getLength());
                    j.append(rcvd + "\n");                String outMessage="";
                   if(outputmessage!="")
                    {
                        outMessage = outputmessage;
                        outputmessage = "";                                        if (outMessage.equals("bye")) {
                            break;
                        }
                        String outString = "Client Say:" + outMessage;
                        byte[] buf = outString.getBytes();
                        DatagramPacket out = new DatagramPacket(buf, buf.length,
                                hostAddress, 4444);
                        s.send(out);
                        
                   }我把 Client的receive端写在最前面  Server端发个包过来  结果没反映
      

  7.   

    while(true)
                {
                    s.receive(dp);
                    String rcvd = new String(dp.getData(), 0, dp.getLength());
                    j.append(rcvd + "\n");//把收到的消息写到文本育                String outMessage="";
                   if(outputmessage!="")//如果文本域中的输出消息不为空 发送数据包
                    {
                        outMessage = outputmessage;
                        outputmessage = "";
                        if (outMessage.equals("bye")) {
                            break;
                        }
                        String outString = "Client Say:" + outMessage;
                        byte[] buf = outString.getBytes();
                        DatagramPacket out = new DatagramPacket(buf, buf.length,
                                hostAddress, 4444);
                        s.send(out);//发送
    结果 怎么收不到
                        
                   }