📄 udpserverservice.java
字号:
import java.io.*;
import java.net.*;
public class UDPServerService
{
public static void main(String args[])
{
if(args.length<1)
{
System.out.println("请输入用于mail服务的本地端口号");
System.exit(0);
}
UDPServerThread MyUDPServer=new UDPServerThread(Integer.parseInt(args[0]));//创建邮件服务器监听线程
MyUDPServer.start(); //启动线程
}
}
class UDPServerThread extends Thread
{
private DatagramSocket UDPServerSocket=null;
public UDPServerThread(int Port) //构造函数
{
try{ //创建服务器端收发UDP的DatagramSocket对象,在Port端口收发UDP
UDPServerSocket=new DatagramSocket(Port);
System.out.println("邮件服务监听器在端口"+UDPServerSocket.getLocalPort()+"\n");
}catch(Exception e)
{
System.err.println(e);
}
}
public void run()
{
if(UDPServerSocket==null)
return;
while(true)
{
try{
byte dataBuf[]=new byte[512];//保存数据报的字节数组
DatagramPacket ServerPacket;
InetAddress RemoteHost;
int RemotePort;
String Datagram,s;
ServerPacket=new DatagramPacket(dataBuf,512);
UDPServerSocket.receive(ServerPacket);
RemoteHost=ServerPacket.getAddress();
RemotePort=ServerPacket.getPort();
Datagram=new String(ServerPacket.getData());
System.out.println("收到如下主机发来的邮件"+RemoteHost.getHostName()+":\n "+Datagram);
Datagram=new String(RemoteHost.getHostName()+":\n MailServer"+InetAddress.getLocalHost().getHostName()+
" has already get your mails.");
for(int i=0;i<512;i++) dataBuf[i]=0;
Datagram.getBytes(0,Datagram.length(),dataBuf,0);
ServerPacket=new DatagramPacket(dataBuf,dataBuf.length,RemoteHost,RemotePort);
UDPServerSocket.send(ServerPacket);
}catch(Exception e){
System.err.println(e);
}
}
}
protected void finalize()
{
if(UDPServerSocket!=null)
{
UDPServerSocket.close();
UDPServerSocket=null;
System.out.println("关闭服务器的数据报连接");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -