首页 > 代码库 > 黑马程序员——UDP接收端与发送端

黑马程序员——UDP接收端与发送端

 

看了Socket的网络编程,感觉这个东西好神奇啊

下面是Socket的发送端:

/*  Socket编程,发送端  

1.建立Socket发送端的端口,DatagramSocket  

2.将数据进行封装,加入接收端地址和端口号,DatagramPacket  

3.发送数据包send()

 4.关闭资源

*/ import java.io.*; import java.net.*;

public class SocketSend{

public static void main(String [] args) throws Exception{   

//创建发送端端口   DatagramSocket datagramSocket = new DatagramSocket();

     BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

  //创建数据,并将数据封装打包,加入接收端地址和端口号   String str = null;

  while((str = bufferedReader.readLine())!=null){      

 //DatagramPacket(byte[] buf, int length, InetAddress address, int port)   

byte[] buf = str.getBytes();  

 //192.168.1.0是网络地址,即网段号。  

 //如果在局域网的广播地址255里发送消息,该段内的所有IP地址都可以接收到这个消息。   

DatagramPacket datagreamPacket = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.0.101"),20000);  

 //发送   

datagramSocket.send(datagreamPacket);     

 if("over".equals(str)){     break;    }   }   

//关闭资源   

datagramSocket.close();  

} }

 

下面是接收端:

//Socket接收端 /*

1.创建接收端端口,DatagramSocket,并且指定端口号  

2.创建数据包,用来存放接收到的数据包,new DatagramPacket(buf,buf.length)   ,receive(DatagramPacket datagramPacket)  

3.提取数据包中的数据

 4,关闭资源。

*/

import java.net.*;

public class  SocketReceive{  

public static void main(String [] args) throws Exception{  

 //创建端口号   

DatagramSocket datagramSocket = new DatagramSocket(20000);

  //DatagramPacket(byte[] buf, int length)  

 //创建数据包,存放接收到的数据包   

byte[] buf = new byte[1024];

  while(true){

  DatagramPacket datagramPacket = new DatagramPacket(buf,buf.length);  

 datagramSocket.receive(datagramPacket);   

//获取数据包中的数据   

String ip = datagramPacket.getAddress().getHostAddress();      

String data = http://www.mamicode.com/new String(datagramPacket.getData(),0,datagramPacket.getLength());

  int port = datagramPacket.getPort();      

System.out.println(ip+"..."+data+"..."+port);  

 if("over".equals(data)){    break;   }   }   

//关闭资源  

 datagramSocket.close();

 } }