美文网首页
Telnet服务器开发

Telnet服务器开发

作者: Wpixel | 来源:发表于2018-07-24 17:29 被阅读0次

子曰:“巧言令色,鲜矣仁!”

Telnet服务器代码
import java.io.BufferedReader;  
import java.io.IOException;  
import java.io.InputStream;  
import java.io.InputStreamReader;  
import java.io.OutputStream;  
import java.net.ServerSocket;  
import java.net.Socket;  
import java.text.SimpleDateFormat;  
import java.util.Date;  
import java.util.concurrent.ExecutorService;  
import java.util.concurrent.Executors;  
  
public class HelloServer {  
  
    public static final int SERVER_PORT = 5555;  
    private ServerSocket serverSocket = null;  
    private ExecutorService executorService = null;  
    private final int POOL_SIZE = 2;  
      
    public HelloServer() throws Exception{  
        int cpuCount = Runtime.getRuntime().availableProcessors();  
        executorService = Executors.newFixedThreadPool(cpuCount * POOL_SIZE);  
        serverSocket = new ServerSocket(SERVER_PORT);  
        System.out.println("服务器已启动,监听中...");  
        while(true){  
            try{  
                Socket socket = serverSocket.accept();  
                executorService.execute(new HelloResponser(socket));  
            }catch(Exception e){  
                e.printStackTrace();  
            }  
        }  
    }  
      
    class HelloResponser implements Runnable{  
        private Socket socket = null;  
          
        public HelloResponser(Socket socket){  
            this.socket = socket;  
        }  
        
        @Override  
        public void run() {  
            try{  
                String clientIp = socket.getInetAddress().getHostAddress();  
                System.out.println("开始处理来在 " + clientIp + ":" + socket.getPort() + " 的请求\r\n");  
                InputStream socketInStream = socket.getInputStream();  
                BufferedReader br = new BufferedReader(new InputStreamReader(socketInStream, "UTF-8"));  
                OutputStream socketOutStream = socket.getOutputStream();  
                socketOutStream.write(("Shell>").getBytes("GBK"));  
                String clientRequestString = null;  
                while((clientRequestString = br.readLine()) != null){  
                    System.out.println("接收到客户端 " + clientIp + " 的信息:" + clientRequestString);  
                    String serverReturn = null;  
                    if(clientRequestString.equals("quit")){  
                        serverReturn = "断开连接.\r\n";  
                        System.out.println("发送给客户端" + clientIp + "应答信息:" + serverReturn);  
                        socketOutStream.write(serverReturn.getBytes("GBK"));  
                        System.out.println("结束来自 " + clientIp + ":" + socket.getPort() + " 的请求");  
                        break;  
                    }else{  
                        SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E");  
                        serverReturn = df.format(new Date()) + "\r\n";  
                        System.out.println("发送给客户端 " + clientIp + "应答信息:" + serverReturn);  
                        socketOutStream.write((serverReturn+"\r\nShell>").getBytes("GBK"));  
                    }  
                }  
            }catch(Exception e){  
                e.printStackTrace();  
            }finally{  
                try {  
                    if(socket != null){  
                        socket.close();  
                    }  
                } catch (IOException e) {  
                    e.printStackTrace();  
                }  
            }  
        }  
    }  
      
    public static void main(String[] args) throws Exception {  
        new HelloServer();  
    }  
}  

命令行连接服务器 (本地测试如果ip地址用localhost,那么服务端接收到IPV6的ip)
telnet 127.0.0.1 5555


作者是一名自由程序员,住在上海,喜欢音乐、小说、旅行、以及编程。

P.S. 如果您喜欢这篇文章并且希望学习编程技术的话,请关注一下

相关文章

  • Telnet服务器开发

    子曰:“巧言令色,鲜矣仁!” Telnet服务器代码 命令行连接服务器 (本地测试如果ip地址用localhost...

  • ssh服务

    telnet 远程登录 协议,23/tcpC/SS:telnet服务器C:Telnet客户端明文传送 ssh Se...

  • 开启特定服务器端口

    起因 MongoDB服务器安装成并正常启动后,其他服务器能ping通,但是无法Telnet通(如果无法Telnet...

  • 利用终端模拟群聊功能

    前言 在终端中模拟群聊功能,连接 QQ服务器的终端命令: telnet命令telnet host(IP地址) p...

  • 95-socket基础:TCP服务器流程

    服务器启动后,测试可以使用:telnet 127.0.0.1 12345

  • 使用SMTP发送邮件

    该测试在mac下进行 安装telnet 目的: 使用telnet登录SMTP服务器 在早前的版本中,mac是自带t...

  • Linux 远程登录服务:telnet和ssh

    通常情况下远程登录我们使用telnet服务,Red Hat Linux带有telnet服务器的软件包,我们需要安装...

  • 使用 stunnel 保护 telnet 连接

    Telnet 是一种客户端-服务端协议,通过 TCP 的 23 端口连接到远程服务器。Telnet 并不加密数据,...

  • Linux命令之telnet 命令

    介绍 Telnet是常用的远程控制Web服务器的方法 Telnet协议是TCP/IP协议族中的一员,是Intern...

  • 网络连接(1)

    telnet 使用 java 使用Socket连接到服务器 使用inputStream进行处理 使用Scanner...

网友评论

      本文标题:Telnet服务器开发

      本文链接:https://www.haomeiwen.com/subject/eevtyftx.html