📄 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; //保存数据报的DatagramPacket对象
InetAddress RemoteHost; //发来邮件的远程Client的IP地址
int RemotePort; //发来邮件的远程Client的发送端口
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; //清空数据区
dataBuf = Datagram.getBytes();
ServerPacket=new
DatagramPacket(dataBuf,dataBuf.length,RemoteHost,RemotePort);
UDPServerSocket.send(ServerPacket); //向发送方转发本地信息
}catch( Exception e ) {
System.err.println(e);
}
} //while
} //run
protected void finalize()
{ // 程序结束时,将未结束的数据报套接字关闭
if( UDPServerSocket != null )
{
UDPServerSocket.close();
UDPServerSocket = null;
System.out.println(" 关闭服务器端的数据报连接!");
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -