Socket通信
使用UDP协议进行通信
**UDP:**不需要建立连接的通信协议,例如发送短信;即时通信,这种通信的速度快,但是可能存在数据包的丢失。
**DatagramPacket:**将发送数据进行打包
**DatagramPacket:**用来发送打包的数据后,后者接收打包的数据报
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class Client {
public static void main(String[] args) throws Exception {
/**
* 实现UDP协议通信的客户端
*/
System.out.println("==========这是客户端=============");
String content = "初次学习Socket网络编程!";
byte[] bytes = content.getBytes();
//声明byte数组,为最原始的接收ip地址
byte[] addr = {127,0,0,1};
//创建InetAddress对象,封装需要传输到的主机
InetAddress address = InetAddress.getByAddress(addr);
//创建DatagramPacket对象,封装数据以及需要传输到的地址和端口
DatagramPacket packet = new DatagramPacket(bytes, bytes.length,address,7777);
//创建DatagramSocket对象,用来将数据进行打包服务,指定快递员的端口为8888
DatagramSocket socket = new DatagramSocket(8888);
//实现数据传输
socket.send(packet);
socket.close();
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class Server {
public static void main(String[] args) throws IOException {
/**
* 实现UDP协议通信的服务端
*/
System.out.println("==========这是服务端=============");
//创建DatagramSocket对象,用来监听7777端口,若有数据来传输,则接受
DatagramSocket socket = new DatagramSocket(7777);
//创建字节数组
byte[] by = new byte[512];
//创建DatagramPacket对象,用来接收数据,以字节数组形式接收
DatagramPacket packet = new DatagramPacket(by,by.length);
//接收客户端发送过来的数据
socket.receive(packet);
//获得用户发送的数据
byte[] data = packet.getData();
//获得客户端发送过来数据的长度以及端口
int length = packet.getLength();
int port = packet.getPort();
System.out.println(new String(data,0,length));
socket.close();
}
}