要测试服务器套接字连接,如何直接向其发送一个或多个字节?

时间:2017-06-19 21:38:44

标签: java sockets telnet netcat

让我们说我运行的这个示例Java代码侦听端口1234:

ServerSocket socket = new ServerSocket(1234);

并接收收到的第一个字节:

Socket s = socket.accept();

byte[] buffer = new byte[1];
BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
int read = bis.read(buffer, 0, 1);

switch (buffer[0]) {
case 0x01:
    System.out.println("One.");
    break;
case 0x02:
    System.out.println("Two.");
    break;
default:
    System.out.println("Other.");
    break;
}

有没有办法从外部源测试此代码?例如,我可以使用Telnet或NetCat之类的东西来实现这一目标吗?

1 个答案:

答案 0 :(得分:2)

您可以使用 NetCat 执行此操作:

echo -e '\x02' | nc 127.0.0.1 1234

这将导致"两个。"输出到Java应用程序的控制台。

您可以使用 Telnet 这样做(Telnet只会将您键入的每个键作为ASCII字节发送。如果要发送的字节少于可输入字符,可以按Ctrl键从ASCII值中减去64):

telnet 127.0.0.1 1234

然后按Ctrl+B发送0x02(B为ASCII值66,因此按住Ctrl会从值中减去64)。这将导致"二。"输出到Java应用程序的控制台。