我正在写一个微型聊天程序,准备由一个主类调用两个分管接受信息和发送信息的两个线程。下面是接收数据的线程:
import java.net.*;
import java.io.*;
public class ReadT extends Thread {
  public void run() {
    try {
      DatagramSocket sock=new DatagramSocket(1111);
      byte [] ary=new byte[128];
      DatagramPacket pack=new DatagramPacket(ary,128);
      String word="";  //接收数据前把字符串清空
      while(true) {
      //接收数据
        try {
          sock.receive(pack);
          word="";
          String word=new String(pack.getData());
          //这个是判断对方是否输入“bye”,如是则关闭套接字,但是不能成功实现
          if(word.equals("bye")){
          System.out.println("Your friend has logged off!");
          sock.close();
          break;
          }
          System.out.println("From " + pack.getAddress() + " port: " + pack.getPort());
          System.out.println(word);
        }
        catch (IOException e) { System.out.println(e); }
      }
    }
    catch (SocketException e) { System.out.println(e); }       
  }
}
然后用另外一个程序向这个线程发送数据,比方第一次发送“12345”,第二次发送“ab”,程序输出的却是:
12345
ab345
我在接收数据时也已经将字符串变量word重新赋值为空了。还是这样出错。而且通过判断对方输入决定是否关闭套接字的if语句也没用。
  这些应该都是字符串的问题,洗耳恭听高手解答!@!!顺便希望大家对我这个聊天程序的编写方式发表高见!!小弟谢过!!