在做那个UDP交流时,会出现堵塞情况。如:服务端输出到客户端。在客户端中,第一次接收到的是空的内容,在客户端输出内容后,然后再接收服务端的内容,就会出现服务端第一次输出的内容,很奇怪,有意者请棒忙弄弄,代码如下:
客户端:
    import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
import java.util.Scanner;
public class claint { /**
 * @param args
 * @throws IOException 
 */
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
     String p;
   
     DatagramSocket oo=new DatagramSocket(2000);
    byte[] x=new byte[120];
     byte[] j=new byte[120];
     boolean frag=true;
     String e;
     DatagramPacket i=new DatagramPacket(x,x.length);
     System.out.println("您是顾客,您先说:");
     while(frag){
     System.out.println("您说:");
     System.out.print("      ");
     Scanner input=new Scanner(System.in);
     p=input.next();
     j=null;
     j=p.getBytes();
    
     InetAddress n;
     n=InetAddress.getLocalHost();
     DatagramPacket k=new DatagramPacket(j,j.length,n,3000);
     oo.send(k);
 
     System.out.println("他说:");
     oo.receive(i);
     String ni=new String(i.getData());
    
     System.out.println("      "+ni);
     }
     oo.close();
}}
服务器端:
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.util.Scanner;
public class sdd {
public static void main(String args[]) throws IOException{
DatagramSocket b=new DatagramSocket(3000); byte[] buf=new byte[120];
DatagramPacket a=new DatagramPacket(buf,buf.length);
byte[] po=new byte[120];
 InetAddress m;
    m=InetAddress.getLocalHost();
boolean  frag=true;
System.out.println("已经接通了。");
while(frag){
    b.receive(a);
String j=new String(a.getData());
System.out.println("客户端说:");
System.out.println("    "+j);
if(j.equals("bye")){
frag=false;
}
System.out.println("您说:");
        System.out.print("     ");
 DatagramPacket l=new DatagramPacket(po,po.length,m,2000);
    Scanner input=new Scanner(System.in);
    String k=input.next();
         
    po=k.getBytes();
    b.send(l);
        }
}
}