网络编程:
(UdpSend发送端)通过UDP传输方式,将一段文字数据发送出去:
(1)建立udpsocket服务
(2)提供数据,并将数据封装到数据包中
(3)通过socket服务的发送功能,将数据包发送出去
(4)关闭资源
(UdpReceive接收端)定义一个应用程序,用于接收udp协议传输的数据并处理:
(1)定义udpsocket服务。通常会监听一个端口,其实就是给这个接收网络应用程序定义数字标识,方便于明确哪些数据过来该应用程序可以处理。
(2)定义一个数据包,因为要存储到接收的字节数据,数据包对象中有更多功能可以提取字节数据中不同数据信息
(3)通过socket服务的receive方法将收到的数据存入已定义好的数据包中
(4)通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上
(5)关闭资源
1 import java.net.DatagramPacket; 2 import java.net.DatagramSocket; 3 import java.net.InetAddress; 4 5 public class UdpSend{ 6 public static void main(String[] args) throws Exception { 7 //创建udp服务,通过DatagramScoket对象 8 DatagramSocket ds = new DatagramSocket(888); 9 10 //确定数据,并封装成数据包。DatagramPacket(byte[] buf, int length, InetAddress address, int port) 11 byte[] buf = "udp!~".getBytes(); 12 DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.0.105"), 10000); 13 14 //通过socket服务,将已有的数据包发送出去。通过send方法 15 ds.send(dp); 16 17 //关闭资源 18 ds.close(); 19 } 20 }
1 import java.net.DatagramPacket; 2 import java.net.DatagramSocket; 3 4 5 public class UdpReceive { 6 public static void main(String[] args) throws Exception { 7 //创建udpsocket服务,建立端点 8 DatagramSocket ds = new DatagramSocket(10000); 9 10 //定义数据包,用于存储数据 11 byte[] buf = new byte[1024]; 12 DatagramPacket dp = new DatagramPacket(buf, buf.length); 13 14 //通过服务的receive方法,将收到的数据存入数据包中 15 ds.receive(dp); 16 17 //通过数据包的方法获取其中的数据 18 String ip = dp.getAddress().getHostAddress(); 19 String data = new String(dp.getData(), 0, dp.getLength()); 20 int port = dp.getPort(); 21 System.out.println(ip + "..." + data + "..." + port); 22 23 //关闭资源 24 ds.close(); 25 } 26 }
键盘录入方式传输数据:
1 import java.io.BufferedReader; 2 import java.io.InputStreamReader; 3 import java.net.DatagramPacket; 4 import java.net.DatagramSocket; 5 import java.net.InetAddress; 6 7 public class UdpSend{ 8 public static void main(String[] args) throws Exception { 9 DatagramSocket ds = new DatagramSocket(888); 10 BufferedReader bufr = 11 new BufferedReader(new InputStreamReader(System.in)); 12 String line = null; 13 while((line = bufr.readLine()) != null){ 14 if("886".equals(line)) 15 break; 16 byte[] buf = line.getBytes(); 17 DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("192.168.0.105"), 10001); 18 ds.send(dp); 19 } 20 ds.close(); 21 } 22 }
1 import java.net.DatagramPacket; 2 import java.net.DatagramSocket; 3 4 public class UdpReceive { 5 public static void main(String[] args) throws Exception { 6 DatagramSocket ds = new DatagramSocket(10001); 7 while(true){ 8 byte[] buf = new byte[1024]; 9 DatagramPacket dp = new DatagramPacket(buf, buf.length); 10 ds.receive(dp); 11 String ip = dp.getAddress().getHostAddress(); 12 String data = new String(dp.getData(), 0, dp.getLength()); 13 int port = dp.getPort(); 14 System.out.println(ip + ":" + port + ": " + data); 15 } 16 } 17 }
一个聊天程序:
原文:http://www.cnblogs.com/zhangtianq/p/6361785.html