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

📄 smtpserver.java

📁 ... 用JAVA实现SMTP 服务器
💻 JAVA
字号:




import java.net.Socket;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.File;
import java.io.IOException;
import java.io.FileInputStream;
import java.awt.event.*;
import java.net.ServerSocket;
import java.net.InetAddress;
import java.net.*;


public class SmtpServer
{      
   public static final String rootDir="E:\\mailroot"; //邮件存放目录
                                 
   private final int smtpPort=25;//服务器开放端口号
   private final int Num=10;//最大连接数目
   
   public static final String domain="MYSMTP";//本地服务器域名
   
   public static final String domain2="MYSMTP2";//局域网中服务器域名
   
   public static void main(String args[])
    {
   	 SmtpServer server=new SmtpServer();
     
   	}
   	

   public SmtpServer()
   {
   	  start();
   }
   
	
 public void start()
    {         
   	  System.out.println("my smtp server start......");
   
   	  	 	
   	   	   ServerSocket serverSocket=null;
   	   	   Socket socket=null;
   	   try
   	   	  {
   	   	   serverSocket=new ServerSocket(smtpPort,Num);//创建服务套接字
   	   		   	
   	   	  } 
   	   catch(IOException e)
   	   	  {
   	   	   e.printStackTrace();
   	   	   System.exit(1);
   	      }  
   	    while(true)
   	   	  {
   	   		 try
   	   		      	
   	   		     {
   	   		      socket=serverSocket.accept();//等待用户端连接
   	   		      dxc dxc1=new dxc(socket);//一旦有连接,将会启动一个线程处理该用户
   	   		      Thread newthread=new Thread(dxc1);
   	   		      newthread.start();
   	   		     }
   	   		 catch(Exception e)
   	   		     {
   	   		     }
   	   	  }
   	   	    
   	  }
   	   	     
}	     
   	   	     
   	   
 class dxc implements Runnable
   	   
   	{  
   	    Socket socket=null;
   	   	
   	   	public dxc(Socket socket1)
   	   	  {
   	   	   socket=socket1;
   	   	  }//构造函数,初始化socket对象
   	   	
   	   	public void run()   
   	   	    
   	   	    {
   	   	    
   	   	     System.out.println("server start");
   	   	     
   	   		 InputStream input=null;
   	   		 OutputStream output=null;
   	   		    
   	   	 try{
   	   		   	
   	   		   	
   	   		     
   	   		   System.out.println("receive a new request");
   	   		     
   	   		     
   	   		   input=socket.getInputStream();//取得输入流对象
   	   		   output=socket.getOutputStream();//取得输出流对象
   	   		   Request request=new Request(input);//初始化request类
   	   		   Response response=new Response(input,output);//初始化response类
   	   		   	
   	   		   response.setRequest(request);
   	   		   response.sendEventMsg(Response.WELCOME);
   	   		   	
   	   		   while(request.getRequestType()!=Request.QUIT)//判断通信是否结束
   	   		   	    {
   	   		   		 request.getMsg();//调用方法取得用户输入信息
   	   		   		 response.sendEventMsg(request.getRequestType());//处理用户请求
   	   		   		
   	   		   	    }
   	   		   	 
   	   		   	 
   	   		   socket.close();//关闭套接字
   	   		   	
   	   		   }
   	   		   catch(Exception e)
   	   		   {
   	   		   	e.printStackTrace();
   	   		   	
   	   		   } 
    	
    	    }	
  
 
     }
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -