我想在命令行上连接到许多不同的套接字/网络服务,并在标准输出/输入中来回发送数据。
到目前为止,我一直在使用各种不同的语言和方法来做到这一点:C# 中的 System.Net.Sockets、Flash 中的 flash.net.sockets 和 Java 中的 java.net.sockets,具体取决于所使用的协议(protocol)编写套接字的公司给出的客户端示例中使用的套接字和语言。我已经受够了从一种语言转移到另一种语言来做到这一点(在每种情况下都使用提供的客户端套接字示例),并且可能会将所有客户端都转换为 java。
与此同时,我想要一种方法来连接到 Windows 命令行上的套接字,查看标准输出中返回的内容,将文本发送到命令行(或非常非常简单的 GUI)上的套接字,以及查看返回的内容。我不需要任何额外的功能,例如定期 ping 来保持套接字处于 Activity 状态或任何其他功能。
我可以使用哪些工具在 Windows 上执行此操作?我尝试打开一个到套接字的 telnet session ,即 push.domain.com 1234,也尝试使用 Putty 进行连接,但无济于事。
我正在尝试模拟 Flash 客户端连接到此套接字并发送和接收数据的方式:
theSocket.addEventListener(Event.CONNECT, connectHandler);
theSocket.connect(theHost, thePort);
* * *
private function connectHandler(event:Event) : void
{
if (theSocket.connected)
{
bytes = new ByteArray();
bytes.writeByte(35);
bytes.writeByte(1);
bytes.writeByte(23);
bytes.writeByte(7);
bytes.writeUTFBytes(theTopic);
bytes.writeByte(0);
theSocket.writeBytes(bytes);
theSocket.flush();
theSocket.addEventListener(ProgressEvent.SOCKET_DATA, handshakeHandler);
* * *
private function handshakeHandler(event:ProgressEvent) : void
{
var zero:int = 0;
theSocket.removeEventListener(ProgressEvent.SOCKET_DATA, handshakeHandler);
theConnectionTimer.stop();
var bytes:* = new ByteArray();
var counter:int = 0;
theSocket.readUTFBytes(theSocket.bytesAvailable));
var a:* = theSocket.readByte();
var b:* = theSocket.readByte(); // the second byte should be 1????
var response:* = theSocket.readByte(); // this is the reponse identifier. . . ???
theMessageSize = theSocket.readByte(); // is this byte the size??????
switch(response)
{
case 100:
{
while ((zero = theSocket.readByte()) != 0)
{
var temp = counter++;
bytes[temp] = _loc_5;
};
theClientID = bytes.toString();
trace("The client ID is: " + theClientID);
如何使用 Hercules(或任何其他工具)将字节值 35、1、23、7 和 0 以及变量 Topic 的值发送到套接字。理想情况下,我想连接 Hercules,发送那些字节和主题,然后像代码中一样返回包含 clientID 的内容。虽然,我不知道 hercules 是否会将响应中的字节为我呈现为文本。
我会很感激任何关于这方面的建议。
谢谢。
最佳答案
我在考虑 Hercules并搜索该网站,我发现 stackoverflow 中已有答案. 我认为它可以满足您的需求,甚至更多。
关于java - 在 Windows 中通过命令行连接到套接字并发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12267513/