用TELNET连接Socket服务器程序



在说这个小程序实现之前,我们先仔细分析下ServerSocket和Socket的众多构造方法,了解各个构造方法的细节差异,有助于我们正确的构建一个准确连接的网络应用程序,先说ServerSocket的构造方法:
1)ServerSocket()
          创建非绑定服务器套接字。 必须用bind方法将 ServerSocket 绑定到特定地址(IP 地址和端口号)。

2)ServerSocket(int port)
          创建绑定到特定端口的服务器套接字。 如果为0,那系统自动分配一个没有给程序使用的端口号。

3)ServerSocket(int port, int backlog)
          利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。 backlog用于指定在服务器很忙的时候,可以保持连接的请求数量。第二个默认是50个。

4)ServerSocket(int port, int backlog, InetAddress bindAddr)
          使用指定的端口、侦听 backlog 和要绑定到的本地 IP 地址创建服务器。 还可以指定Sersokect所绑了定的地址。在有多块网卡,或者多个IP地址的情况下使用这种构造方法。

       accpet方法接收了客户端的连接请求,返回一个与客户端连接的服务器端socket对象。不能使用下列Socket的任何构造方法去创建服务器端的Socket对象。

Socket的构造方法:
1)Socket()
          通过系统默认类型的 SocketImpl 创建未连接套接字。在客户端尝试去连接多个服务器时,可以不断调用connect 方法来连接服务器。

2)Socket(InetAddress address, int port)
          创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

3)Socket(InetAddress host, int port, boolean stream)
          已过时。 创建一个套接字并将其连接到指定远程地址上的指定远程端口。

4)Socket(Proxy proxy)
          创建一个未连接的套接字并指定代理类型(如果有),该代理不管其他设置如何都应被使用。

5)potected Socket(SocketImpl impl)
         使用用户指定的 SocketImpl 创建一个未连接 Socket。

6)Socket(String host, int port)
       这个构造方法简单方法。创建一个流套接字并将其连接到指定主机上的指定端口号。 接收字符串形式的IPod地址。事实上客户端的端口号一般不需要指定。

7)Socket(String host, int port, boolean stream)
         已过时。使用 DatagramSocket 取代 UDP传输。

8)Socket(String host, int port, InetAddress localAddr, int localPort)
         创建一个套接字并将其连接到指定远程主机上的指定远程端口。

        TELNET是最简单的客户端程序。程序代码编译之后,运行状态下,打开cmd > telnet 127.0.0.1 8001 就可以与这个简单的服务器程序建立连接,默认TELNET对你输入的字符不回显,可以这样打开:TELNET回车 > 进入命令状态 > help >set LOCALECHO 再quit 命令退出。即使telnet不输入回车键,每个字符也会被立即发送出去。服务器端关闭socket对象时。TELNET会反馈信息:遗失对主机的连接。这里我们使用BufferedReader 这个类,来包装我们的网络字节输入流InputStream。new BufferedReader(new InputStreamReader(serverIn));



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;
public class TcpServer {
   public static void main(String[] args) throws IOException {
         //建立一个端口号为8001的服务器端ServerSocket对象
      ServerSocket server = new ServerSocket(8001);
          //监听客户端的连接请求
      Socket acceptSocket = server.accept();
          //提取socket对象的输入流
      InputStream serverIn = acceptSocket.getInputStream();
          //提取socket对象的输出流
      OutputStream serverOut = acceptSocket.getOutputStream();
         //在输出流上发送文字,客户端连接上后马上能接收到
      serverOut.write("welcom to visit server.".getBytes());
        //建立缓冲流来显示客户端的输入    
      BufferedReader buf = new BufferedReader(new InputStreamReader(serverIn));     
      String temp = buf.readLine();     
      System.out.println(temp);
     
        //注意关闭顺序
      buf.close();     //会自动关闭低层输入的字节流
      serverOut.close();
      acceptSocket.close();
      server.close();
   }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 我可以为您提供一个Java telnet终端程序的示例:import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintStream;import java.net.Socket;public class TelnetClient {public static void main(String[] args) {try {String server = "localhost";int port = 23;Socket socket = new Socket(server, port);// 取得输入流BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));// 取得输出流PrintStream ps = new PrintStream(socket.getOutputStream());// 打印提示信息System.out.println(br.readLine());// 读取键盘输入数据BufferedReader keyIn = new BufferedReader(new InputStreamReader(System.in));while (true) {String line = keyIn.readLine();ps.println(line);System.out.println(br.readLine());if (line.equals("exit")) {break;}} // 关闭socket.close();} catch (Exception e) {System.out.println("Error:" + e);}}} ### 回答2: 要生成Java Telnet终端程序,我们需要使用Java编程语言和一些相关的类库。下面是一个简单的示例,演示了如何实现一个基本的Telnet客户端程序。 首先,我们需要引入Java的`Socket`和`InputStream/OutputStream`类,以便建立与Telnet服务器的连接并进行通信。 ```java import java.io.*; import java.net.Socket; public class TelnetClient { public static void main(String[] args) { String hostname = "telnet.server.com"; // 设置Telnet服务器的主机名 int port = 23; // 设置Telnet服务器的端口号 try { Socket socket = new Socket(hostname, port); // 建立与Telnet服务器的连接 BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream())); // 发送和接收数据 writer.write("Hello Telnet Server!\n"); writer.flush(); String response = reader.readLine(); System.out.println("Response from server: " + response); // 关闭连接 socket.close(); } catch (IOException e) { e.printStackTrace(); } } } ``` 上述代码通过建立与Telnet服务器的Socket连接,并使用`BufferedReader`和`BufferedWriter`类进行输入输出数据的处理。首先,我们发送一条消息到服务器,然后读取服务器的响应,并在控制台上显示响应内容。最后,我们关闭连接。 请注意,Telnet服务器的主机名和端口号应根据实际情况进行替换,同时可以增加更多的输入输出操作来实现更复杂的功能。 希望这个简单的示例能帮助您生成Java Telnet终端程序。 ### 回答3: 生成Java telnet终端程序可以通过以下几个步骤来完成。 首先,我们需要使用Java的Socket类来建立和服务器之间的连接。我们可以使用ServerSocket类来创建一个服务器Socket,并设置监听的端口。然后使用Socket类来创建一个客户端Socket,并将其连接到服务器的IP地址和端口。 其次,我们需要实现telnet协议的解析和处理逻辑。telnet协议本质上是一种基于文本的协议,传输的是一系列的命令和响应。我们可以通过使用Java的输入输出流来发送和接收数据。当我们发送一个命令时,将其写入到Socket的输出流中;当我们接收到响应时,从Socket的输入流中读取响应。 然后,我们需要处理telnet协议中的特殊字符和选项。telnet协议中定义了一些特殊字符和选项,比如回车换行、退格、删除等。我们需要在程序中对这些特殊字符和选项进行解析和处理,以保证终端程序的正常运行。 最后,我们可以为用户提供一个用户界面,以便他们可以使用telnet终端程序进行交互。可以使用Java的GUI库来创建一个用户界面,例如使用Swing库创建一个窗口,并在窗口中显示终端程序的输出和接受用户的输入。 综上所述,生成Java telnet终端程序需要建立和服务器的连接,实现telnet协议的解析和处理逻辑,处理特殊字符和选项,并为用户提供一个用户界面。通过这些步骤,我们可以编写一个功能完善的Java telnet终端程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值