【问题标题】:Connect to socket on command line in Windows and send data在 Windows 的命令行上连接到套接字并发送数据
【发布时间】:2012-09-04 16:15:24
【问题描述】:

我想在命令行上连接到多个不同的套接字/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 是否会为我将响应中的字节呈现为文本。

我会很感激任何关于这个的指针。

谢谢。

【问题讨论】:

    标签: java windows flash sockets tcp


    【解决方案1】:

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

    【讨论】:

    • 嗯,问题不一样,另一个是问一个工具用做服务器,这个问题是关于一个工具用做客户端的。
    • 试试#035#001#023#007thetopicnamegoeshere#000
    • 很高兴为您提供帮助。我知道你可以奖励一个答案,但我从来没有这样做过。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-07-16
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多