java网络编程二
Socket
网络通信其实就是Socket间的通信
Socket就是为网络服务提供的一种机制。
通信的两端都有Socket。
数据在两个Socket间通过IO传输
UDP传输
DatagramSocket与DatagramPacket
建立发送端,接收端
建立数据包
调用Socket的发送接收方法
关闭Socket
发送端与接收端是两个独立的运行程序。
使用UDP方式,向目标机器发送数据,示例如下:
发送端
public static void main(String[] args) throws Exception {
//1、创建UDP服务,通过DatagramSocket对象
DatagramSocket dgs = new DatagramSocket();
//2、确定数据,并封装成数据包,DatagramPacket(byte[] buf,int length,InetAddress address,int port)
byte[] buf = "udp is come on".getBytes();
DatagramPacket dgp = new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.30.88"),10000);
//3、通过Socket服务,将已有的数据包发送出去,通过send方法
dgs.send(dgp);
System.out.println("发送完毕");
//4、关闭资源
dgs.close();
}
接收端
编写思路:
1、定义udpsocket服务
2、定义一个数据包,因为要存储接收到的字节数据
3、通过socket服务的receive方法将收到的数据存入已定义好的数据包中
4、通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上。
5、关闭资源
public static void main(String[] args) throws Exception {
//1、创建UDPSocket,建立商战
DatagramSocket socket = new DatagramSocket(10000);
//2、定义数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket packet = new DatagramPacket(buf,buf.length);
//3、通过服务的receive方法将收到数据存入数据包
socket.receive(packet);
//4、通过数据包的方法获取其中的数据
String ip = packet.getAddress().getHostAddress();
String data = new String(packet.getData(),0,packet.getLength());
int port = packet.getPort();
System.out.println(ip+":"+data+":"+port);
System.out.println("接收完毕");
//关闭资源
socket.close();
}