java - 在 Windows 中通过命令行连接到套接字并发送数据

标签 java windows flash sockets tcp

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

到目前为止,我一直在使用各种不同的语言和方法来做到这一点: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/

相关文章:

html - 鼓舞人心的网络实验和技术演示

java - 并行多播路由(末尾带有 POST)

java - 确保模拟调用时条件返回 false

针对 Active Directory 的 Java 身份验证,身份验证不匹配?

windows - 为什么我的规范化路径的前缀是\\?\

c++ - 关闭控制台窗口时优雅退出

javascript - 是否可以从 html flash 对象读取图像数据?例如。通过 Canvas 绘制图像

apache-flex - 在 Flash Builder 4 中调试时如何使用 URL 参数?

java - 使用 Android 应用程序治疗痉挛期?

c++ - WinAPI - GetRawInputBuffer