学习的课程,程序比较简单,直接上代码。
UDPServer
package com.imooc;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPServer {
public static void main(String[] args) throws SocketException {
// TODO Auto-generated method stub
DatagramSocket socket= new DatagramSocket(8800);
byte[] data = new byte[1024];
DatagramPacket packet = new DatagramPacket(data, data.length);
System.out.println(".....服务器准备启动......");
int count = 0;
while(true)
{
try {
socket.receive(packet);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
count++;
UDPServerThread udpServerThread = new UDPServerThread(packet);
udpServerThread.start();
String info = new String(data, 0, packet.getLength());
System.out.println("我是服务器,客户端说:" + info);
System.out.println("该客户端IP地址为:" + packet.getAddress());
System.out.println("客户端连接次数:" + count);
}
}
}
UDPServerThread
package com.imooc;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class UDPServerThread extends Thread {
DatagramPacket datagramPacket = null;
public UDPServerThread(DatagramPacket packet) {
// TODO Auto-generated constructor stub
this.datagramPacket = packet;
}
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
InetAddress inetAddress = datagramPacket.getAddress();
int port2 = datagramPacket.getPort();
byte[] data2 = "欢迎你的到来".getBytes();
DatagramPacket datagramPacket2 = new DatagramPacket(data2, data2.length, inetAddress,port2);
DatagramSocket socket = null;
try {
socket = new DatagramSocket();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
socket.send(datagramPacket2);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket.close();
}
}
UDPClient
package com.imooc;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;
public class UDPClient {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
InetAddress inetAddress = InetAddress.getByName("localhost");
int port = 8800;
byte[] data = "用户名: 000;密码: 123".getBytes();
DatagramPacket packet = new DatagramPacket(data, data.length,inetAddress,port);
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
/*
* 接收服务器端的数据
*/
byte[] data2 = new byte[1024];
DatagramPacket packet2 = new DatagramPacket(data2, data2.length);
socket.receive(packet2);
String reply = new String(data2, 0, packet2.getLength());
System.out.println("我是客户端,服务器说:"+reply);
socket.close();
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SocketException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
输出结果
.....服务器准备启动......
我是服务器,客户端说:用户名: 555;密码: 123
该客户端IP地址为:/127.0.0.1
客户端连接次数:1
我是服务器,客户端说:用户名: 444;密码: 123
该客户端IP地址为:/127.0.0.1
客户端连接次数:2
我是服务器,客户端说:用户名: 333;密码: 123
该客户端IP地址为:/127.0.0.1
客户端连接次数:3
我是服务器,客户端说:用户名: 222;密码: 123
该客户端IP地址为:/127.0.0.1
客户端连接次数:4
我是服务器,客户端说:用户名: 111;密码: 123
该客户端IP地址为:/127.0.0.1
客户端连接次数:5
我是服务器,客户端说:用户名: 000;密码: 123
该客户端IP地址为:/127.0.0.1
客户端连接次数:6