1

我想在命令行上连接到许多不同的套接字/webservices,并在标准输出/输入中来回发送数据。

到目前为止,我一直在使用各种不同的语言和方法来执行此操作:C# 中的 System.Net.Sockets、Flash 中的 flash.net.sockets 和 Java 中的 java.net.sockets,具体取决于套接字使用的协议和编写套接字的公司给出的客户端示例中使用的语言。我已经受够了从一种语言转移到另一种语言来做到这一点(在每种情况下都使用提供的客户端套接字示例),并且可能会将所有客户端都转移到 java.util 。

同时,我想要一种在 Windows 命令行上连接到套接字的方法,查看标准输出中返回的内容,在命令行(或非常非常简单的 GUI)上将文本发送到套接字并查看返回的内容背部。我不需要任何额外的功能,比如定期 ping 来保持套接字处于活动状态或其他任何东西。

我可以使用哪些工具在 Windows 上执行此操作?我已经尝试打开到套接字的 telnet 会话,即 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 是否会为我将响应中的字节呈现为文本。

我将不胜感激任何关于此的指示。

谢谢。

4

2 回答 2

0

我在Hercules中思考并搜索我发现在stackoverflow中已经有答案的网站。我认为它可以满足您的需要,甚至更多。

于 2012-09-04T16:37:11.893 回答
0

嗯,我不确定我是否完全理解你的要求,但我不明白为什么 telnet 在这种情况下不能帮助你。

于 2012-09-04T16:44:08.770 回答