⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 udpserverservice.java

📁 有大量的java的实例
💻 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 + -