DatagramSocket是利用UDP进行通讯,数据传输是不可靠的。
//服务器线程
package udp;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDP_ServerThread implements Runnable{
DatagramSocket ds;
public UDP_ServerThread(int port) {
// TODO Auto-generated constructor stub
try {
ds=new DatagramSocket(port);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
//循环接受数据包
while(true){
byte[] b=new byte[1024];
DatagramPacket dPacket=new DatagramPacket(b,b.length);
try {
ds.receive(dPacket);
System.out.println("server收到的数据是:"+new String(dPacket.getData(),0,dPacket.getLength()));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
//客户端线程
package udp;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDP_ClientThread implements Runnable{
DatagramSocket ds;
public UDP_ClientThread(int port) {
// TODO Auto-generated constructor stub
try {
ds=new DatagramSocket(port);
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
byte[] b=new byte[1024];
try {
InputStreamReader ir=new InputStreamReader(System.in);
BufferedReader br=new BufferedReader(ir);
String str;
while((str=br.readLine())!=null){
DatagramPacket dPacket=new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),8888);
ds.send(dPacket);
}
br.close();
ir.close();
ds.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
//主方法
package udp;
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Thread thread=new Thread(new UDP_ServerThread(8888));
thread.start();
Thread threadc=new Thread(new UDP_ClientThread(8889));
threadc.start();
}
}