看了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 = new String(datagramPacket.getData(),0,datagramPacket.getLength());
int port = datagramPacket.getPort();
System.out.println(ip+"..."+data+"..."+port);
if("over".equals(data)){ break; } }
//关闭资源
datagramSocket.close();
} }
黑马程序员——UDP接收端与发送端,布布扣,bubuko.com
原文地址:http://www.cnblogs.com/meng84201/p/3844567.html