1

コマンドラインでさまざまなソケット/Webサービスに接続し、標準出力/入力でデータをやり取りしたいと考えています。

これまで、さまざまな言語とアプローチを使用してこれを行ってきました。ソケットで使用されているプロトコルに応じて、C# の System.Net.Sockets、Flash の flash.net.sockets、Java の java.net.sockets とソケットを作成した企業が提供するクライアントの例で使用されている言語。私はこれを行うために言語から言語へと十分に移行してきました (それぞれのケースで提供されたクライアント ソケットの例を使用します)。おそらくすべてのクライアントが Java になります。

当面は、Windows のコマンド ラインでソケットに接続し、標準出力で何が返されるかを確認し、コマンド ライン (または非常に単純な GUI) でソケットにテキストを送信し、何が返されるかを確認する方法が必要です。戻る。ソケットを維持するための定期的な ping などの追加機能は必要ありません。

Windows でこれを行うには、どのツールを使用できますか? ソケット、つまりpush.domain.com 1234へのtelnetセッションを開こうとしましたが、Puttyを使用して接続しようとしましたが、役に立ちませんでした。

フラッシュクライアントがこのソケットに接続してデータを送受信する方法をエミュレートしようとしています:

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

ええと、私はあなたが何を求めているのかを完全に理解したかどうかはわかりませんが、この場合にtelnetがあなたを助けることができなかった理由はわかりません。

于 2012-09-04T16:44:08.770 に答える
0

私はHerculesで考えていて、ウェブサイトを検索していたところ、stackoverflowに既に答えがあることがわかりました。私はそれがあなたが必要とすること以上のものをすると思います.

于 2012-09-04T16:37:11.893 に答える