2012-09-04 2 views
1

명령 줄에서 여러 소켓/웹 서비스에 연결하고 표준 출력/데이터에서 앞뒤로 데이터를 보내려고합니다.Windows의 명령 줄에서 소켓에 연결하고 데이터를 보내십시오.

저는 지금까지 다양한 언어와 접근 방식을 사용하여이 작업을 수행해 왔습니다 : C#의 System.Net.Sockets, Flash의 flash.net.sockets 및 Java의 java.net.sockets (사용되는 프로토콜에 따라 다름) 소켓을 작성한 회사가 제공 한 클라이언트 예제에서 사용되는 소켓과 언어에 의해. 이 작업을 수행하기 위해 언어에서 언어로 이동하는 데 충분한 시간을 가지며 (각각의 경우 제공된 클라이언트 소켓 예제를 사용하여) 모든 클라이언트가 Java로 전환됩니다.

그동안 Windows에서 명령 줄의 소켓에 연결하고 표준 출력에서 ​​반환되는 내용을 보려면 명령 줄에서 텍스트를 보내야합니다 (또는 매우 간단한 GUI) 돌아 오는 것을 확인하십시오. 필자는 소켓을 유지하기 위해 정기적 인 핑 (ping)과 같은 추가 기능이 필요하지 않습니다.

Windows에서 어떤 도구를 사용할 수 있습니까? 소켓 (예 : push.domain.com 1234)에 대한 텔넷 세션을 열려고 시도했으며, 또한 퍼티를 사용하여 아무런 문제없이 연결할 수있었습니다.

내가 플래시 클라이언트가이 소켓에 연결하고 전송하고 수신하는 방식을 모방하기 위해 노력하고있어 데이터 :

내가 35, 1, 23, 7, 0의 바이트 값을 보낼 수있는 방법
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 (또는 다른 도구)를 사용하여 소켓의 변수 Topic 값을 가져올 수 있습니다. 이상적으로, 나는 Hercules와 연결하고, 그 바이트들과 주제를 보내고, 코드에서 clientID를 포함하는 것을 다시 얻고 싶다. 하지만, 헤라클레스가 응답의 바이트를 텍스트로 렌더링할지 모릅니다.

나는 이것에 대한 어떤 조언도 주시면 감사하겠습니다.

감사합니다.

답변

0

내가 Hercules에서 생각하고 있었고 웹 사이트를 검색 한 결과 이미 stackoverflow에 답변이 있음을 알았습니다. 나는 그것이 당신이 필요로하는 것 이상을한다고 생각합니다.

+0

그래서 '투표 닫기, 정확한 중복'을 선택하지 않으시겠습니까? – KevinDTimm

+0

글쎄, 질문은 동일하지 않다, 다른 하나는 서버로 사용할 도구를 요구하고 있었는데,이 질문은 클라이언트로 사용할 수있는 도구에 관한 것이다. – pmoleri

+0

'# 035 # 001 # 023 # 007thetopicnamegoherehere here # 000' 시도해주세요. – pmoleri

0

어, 전 당신이 묻고있는 것을 완전히 이해했는지 확신 할 수 없지만 텔넷이이 경우에 당신을 도울 수없는 이유를 모르겠습니다.

관련 문제