//基于udp协议的服务器端程序
public class UDPServer {
public static void main(String[] args) {DatagramSocket ds=null; //声明datagramsocket对象
DatagramPacket dp=null; //声明datagrampacket对象
try {
ds=new DatagramSocket(3000); //服务器在3000端口监听
} catch (SocketException e) {
e.printStackTrace();
}
String str="hello world"; //准备好要发送的信息
try {
dp=new DatagramPacket(str.getBytes(), str.length(),
InetAddress.getByName("127.0.0.1"), 9999);//向客户端所在的9999端口发送信息
} catch (UnknownHostException e) {
e.printStackTrace();
}
System.out.println("发送信息。");
try {
ds.send(dp); //将打包好的数据包发送
} catch (IOException e) {
e.printStackTrace();
}
ds.close();
}
}
//这是基于udp客户端的程序
package shijiu_5;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;
public class UDPClient {
public static void main(String[] args) {
DatagramSocket ds=null; //声明datagramsocket对象
try {
ds=new DatagramSocket(9999); //此客户端在9999端口号监听
} catch (SocketException e) {
e.printStackTrace();
}
byte[] buf=new byte[512]; //接收数据的字节数组
DatagramPacket dp=null;
dp=new DatagramPacket(buf, 512); //接收数据长度为
System.out.println("等待接收数据");
try {
ds.receive(dp); //接收数据
} catch (IOException e) {
e.printStackTrace();
}
String str=new String(dp.getData(),0, dp.getLength())
+"from"+dp.getAddress().getHostAddress()
+":"+dp.getPort(); //接收数据
System.out.println(str); //输出数据
ds.close(); //关闭
}
这是昨天关于学习socket关键字学习时敲的练习代码,其中需要注意的知识点有:
关于客户端需要与服务器端口建立连接(输入服务器端口),以及定义接收服务器端返回信息的承接字符数组注意需要关闭的字节流和socket关键字等等;
关于服务器端端口需要注意的点有:需要定义信息发送的客户端端口,以及服务器端自己的监听端口,主机名以及自己需要发送的信息字符串;
以及它们各自的主要方法的使用UDP的datagramsocket(需要发送或者接受send/receive信息的套接字)和datagrampacket(打包需要发送或者接收的信息数组)
这就是我今天学习到的内容,分享给大家,希望大家指正其中的不足