UDP实例一:
package com.nbchina.net;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpRece {
public static void main(String[] args) throws Exception{
//1、创建udp服务。通过DatagramSocket对象。监听10000端口
DatagramSocket ds = new DatagramSocket(10000);
//2、确定数据,用户储存数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3、通过socket服务,receive方法将收到的数据存入数据包中
ds.receive(dp);
//4.通过数据包的方法获取其中所要数据
String ip=dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println(ip+"::"+data+"::"+port);
ds.close();
}
}
package com.nbchina.net;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpSend {
public static void main(String[] args) throws Exception{
//1、创建udp服务。通过DatagramSocket对象。端口不填,随机。填写,则发送端口确定
DatagramSocket ds = new DatagramSocket(8888);
//2、确定数据,并封装成数据包DatagramPacket(byte[] buf,int length,InetAddress address,int port)
byte[] buf = "udp data send...".getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.8"),10000);
//3、通过socket服务,将已有数据发送出去
ds.send(dp);
//4、关闭资源
ds.close();
}
}
UDP实例二
package com.nbchina.net2;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UdpRece {
public static void main(String[] args) throws Exception{
//1、创建udp服务。通过DatagramSocket对象。监听10000端口
DatagramSocket ds = new DatagramSocket(10000);
int i=1;
while(true){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
//3、通过socket服务,receive方法将收到的数据存入数据包中
//receive阻塞住程序运行。
ds.receive(dp);
//4.通过数据包的方法获取其中所要数据
String ip=dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println("["+i+"]"+ip+":"+port+"--"+data);
i++;
}
//2、确定数据,用户储存数据
//ds.close();
}
}
package com.nbchina.net2;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpSend {
public static void main(String[] args) throws Exception{
//1、创建udp服务。通过DatagramSocket对象。端口不填,随机。填写,则发送端口确定
DatagramSocket ds = new DatagramSocket(8888);
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=bufr.readLine())!=null){
if("886".equals(line))
break;
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.8"),10000);
ds.send(dp);
}
ds.close();
}
}
UDP实例三----多线程聊天室
package com.nbchina.chat;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UdpChat {
public static void main(String[] args) throws Exception{
DatagramSocket ss = new DatagramSocket(9999);
DatagramSocket rs = new DatagramSocket(10003);
new Thread(new Send(ss)).start();
new Thread(new Rece(rs)).start();
}
}
class Send implements Runnable{
private DatagramSocket ds;
public Send(DatagramSocket ds){
this.ds = ds;
}
public void run() {
try{
BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
String line = null;
while((line=bufr.readLine())!=null){
if("886".equals(line))
break;
byte[] buf = line.getBytes();
DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.8"),10003);
ds.send(dp);
}
}catch(Exception e){
throw new RuntimeException("发送端异常");
}
}
}
class Rece implements Runnable{
private DatagramSocket ds;
public Rece(DatagramSocket ds){
this.ds = ds;
}
public void run() {
try{
int i=1;
while(true){
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
String ip=dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
int port = dp.getPort();
System.out.println("["+i+"]"+ip+":"+port+"--"+data);
i++;
}
}catch(Exception e){
throw new RuntimeException("发送端异常");
}
}
}