网络通信分为TCP和UDP
socket通信分为:打开socket,使用sockt收发数据,关闭socket。
数据在两个Socket间通过IO传输。
UDP通信
udp:是面向无连接的
DatagramSocket(用来发送和接收数据报包的套接字)与DatagramPacket(数据报包)。
建立发送端,接收端。
建立数据包。
调用Socket的发送接收方法。
关闭Socket。
发送端与接收端是两个独立的运行程序。
发送端发送数据
package cn.itcast.net;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import org.junit.Test;
public class UDPSendDemo {
/**
* 模拟UDP发送数据
*
* @throws Exception
*/
public static void main(String[] args) throws Exception {
System.out.println("发送端启动-----------");
DatagramSocket datagramSocket = new DatagramSocket(8888);//8888:指定发送端的发送端口号
String str = "UDP传输演示,哥们我来了";
byte[] buf = str.getBytes();
DatagramPacket dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("127.0.0.1"), 10001);//1001:指定接受端的接受端口号
datagramSocket.send(dp);
datagramSocket.close();
}
}
}
接受端接受数据
package cn.itcast.net;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPReceDemo {
/**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
System.out.println("接收端启动......");
DatagramSocket ds = new DatagramSocket(10001);//接受端的端口号
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,buf.length);
ds.receive(dp);
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
String text = new String(dp.getData(),0,dp.getLength());
System.out.println(ip + ":" + port + ":" + text);
ds.close();
}
}