java-网络编程
1、UDP模式
- 需要先运行接收端才能顺利的接收数据
- 主要用到三个类:DatagramSocket、DatagramPacket、InetAddress
发送端
- 创建发送端的Socket对象(DatagramSocket)
- 创建数据,并把数据打包
- 调用DatagramSocket对象的方法发送数据
- 关闭发送端
public class UdpSendDemo {
public static void main(String[] args) throws IOException {
// 创建发送端的Socket对象(DatagramSocket)
// DatagramSocket () 构造数据报套接字并将其绑定到本地主机上的任何可用端口
DatagramSocket socket = new DatagramSocket();
// 构造一个数据包,发送长度为length的数据包到指定 主机上的指定端口号
byte[] bys = "你好,我是发送端".getBytes();
InetAddress address = InetAddress.getByName("127.0.0.1");
int port = 10087;
// 创建数据,并把数据打包
DatagramPacket dp = new DatagramPacket(bys, bys.length, address, port);
socket.send(dp);
// 关闭发送端
socket.close();
}
}
接收端
- 1:创建接收端的Socket对象(DatagramSocket)
- 2:创建-一个数据包,用于接收数据
- 3:调用DatagramSocket对象的方法接收数据
- 4:解析数据包,并把数据在控制台显示
- 5:关闭接收端
public class UdpReceiveDemo {
public static void main(String[] args) throws IOException {
DatagramSocket socket = new DatagramSocket(10087);
// 创建一个数据包,用于接收数据
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
// 调用DatagramSocket对象的方法接收数据
socket.receive(dp);
// 解析数据包,并把数据在控制台显示
System.out.println("数据是:" + new String(dp.getData(), 0, dp.getLength()));
// 关闭接收端
socket.close();
}
}
- 广播和单播一致,只是把InetAddress的地址修改255.255.255.255
客户端
public class TcpClientDemo {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("127.0.0.1", 9898);
//OutputStream stream = socket.getOutputStream();
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stream));
writer.write("Hello,社会主义好".getBytes());
socket.close();
}
}
服务端
public class TcpServerDemo {
public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(9898);
Socket socket = serverSocket.accept();
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
socket.close();
reader.close();
}
}
世界上没有什么事情是跑步解决不了的,如果有,那就再跑一会!