在Windows的命令行上连接到套接字并发送数据

时间:2012-09-04 16:15:25

标签: java windows flash sockets tcp

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

到目前为止,我一直在使用各种不同的语言和方法:C#中的System.Net.Sockets,Flash中的flash.net.sockets和Java中的java.net.sockets,具体取决于所使用的协议套接字和在编写套接字的公司给出的客户端示例中使用的语言。我已经有足够的时间从语言转到语言(在每种情况下使用提供的客户端套接字示例),并且可能所有客户端都是java。

与此同时,我想要一种方法连接到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的内容。虽然,我不知道赫拉克勒斯是否会将响应中的字节呈现给我。

我很欣赏这方面的任何指示。

感谢。

2 个答案:

答案 0 :(得分:0)

我正在考虑Hercules并在搜索我发现的网站stackoverflow已有答案。 我认为它可以满足您的需求和更多。

答案 1 :(得分:0)

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