UDP套接字的java实现
客户端如下:
import java.io.*;
import java.net.*;
import java.util.Scanner;
/*
* UDP套接字客户端
*/
public class UDPClient {
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
BufferedReader inFormUser = new
BufferedReader(new InputStreamReader(System.in)); //以缓冲方式输入一段字符串
//System.out.println(sentence);
DatagramSocket ClientSocket = new DatagramSocket(); //创建一个套接字
InetAddress IPAddress = InetAddress.getByName("hostname(你的主机名称)"); //获取本机IP地址
byte[] sendData = new byte[1024]; //一次发送1024字节
byte[] receiveData = new byte[1024]; //一次接收1024字节
String sentence = inFormUser.readLine(); //获取要发送的字节
sendData = sentence.getBytes(); //将字符串转化为字节
DatagramPacket sendPacket = new
DatagramPacket(sendData, sendData.length,IPAddress,8765); //创建一个发送数据包
ClientSocket.send(sendPacket); //发送
DatagramPacket receivePacket = new
DatagramPacket(receiveData, receiveData.length, IPAddress, 8765); //创建一个接收的数据包
ClientSocket.receive(receivePacket); //接收
String modifiedSentence = new String(receivePacket.getData());
System.out.print("FROM Server:\n"+modifiedSentence+"\n");
ClientSocket.close();
}
}
服务端如下:
import java.io.*;
import java.net.*;
/*
* UDP套接字服务端
*/
public class UDPServer {
public static void main(String[] args) throws Exception {
DatagramSocket ServerSocket = new DatagramSocket(8765); //创建一个端口号为8765的套接字,端口号必须为1024至65535之间
byte[] receiveData = new byte[1024]; //一次接收1024个字节
byte[] sendData = new byte[1024]; //一次发送1024个字节
while(true){
DatagramPacket receivePacket = new
DatagramPacket(receiveData, receiveData.length); //创建一个数据包
ServerSocket.receive(receivePacket); //套接字接收
String sentence = new String(receivePacket.getData()); //获取接收的数据
System.out.println(sentence);
InetAddress IPAssress = receivePacket.getAddress(); //获取IP地址
int port = receivePacket.getPort(); //获取端口号
String capitalizedSentence = sentence.toUpperCase(); //转化为大写字母
sendData = capitalizedSentence.getBytes(); //转化为字节
DatagramPacket sendPacket = new
DatagramPacket(sendData,sendData.length,IPAssress,port);
ServerSocket.send(sendPacket); //发送
}
}
}