2011-08-15 39 views
0

我有一個使用php/javascript運行的呼叫中心應用程序。當操作員在他的Mac或Windows或Linux上使用Web瀏覽器(例如Firefox/Chrome/Opera/Internet Explorer)時。我需要實時連接到遠程服務器以發送諸如「撥打電話」之類的命令。如何從本地網絡瀏覽器連接到遠程telnet服務器併發送預定義的命令?

但我怎麼能使用JavaScript遠程登錄到遠程服務器?這是可能的JavaScript如果是這樣以及哪些瀏覽器?

感謝

注:不使用此

1)http://matthaynes.net/blog/2008/07/17/socketbridge-flash-javascript-socket-bridge/

2)http://stephengware.com/proj/javasocketbridge/

追問:只有我同時使用Chrome抓住這個包? (Firefox/Opera/Midori/Safari,沒有任何工作)。

# tcpdump -n -x -X -i any port 23 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes 

16:37:00.446070 IP 1.164.45.143.56295 > 1.164.45.143.telnet: Flags [S], seq 205310205, win 32792, options [mss 16396,sackOK,TS val 37248521 ecr 0,nop,wscale 6], length 0 
    0x0000: 4500 003c 96f4 4000 4006 a561 51a4 2d8f E..<[email protected]@..aQ.-. 
    0x0010: 51a4 2d8f dbe7 0017 0c3c c8fd 0000 0000 Q.-......<...... 
    0x0020: a002 8018 fe94 0000 0204 400c 0402 080a [email protected] 
    0x0030: 0238 5e09 0000 0000 0103 0306   .8^......... 
16:37:00.446109 IP 1.164.45.143.telnet > 1.164.45.143.56295: Flags [R.], seq 0, ack 205310206, win 0, length 0 
    0x0000: 4500 0028 0000 4000 4006 3c6a 51a4 2d8f E..([email protected]@.<jQ.-. 
    0x0010: 51a4 2d8f 0017 dbe7 0000 0000 0c3c c8fe Q.-..........<.. 
    0x0020: 5014 0000 0031 0000      P....1.. 
16:37:00.446555 IP 1.164.45.143.56296 > 1.164.45.143.telnet: Flags [S], seq 196642802, win 32792, options [mss 16396,sackOK,TS val 37248521 ecr 0,nop,wscale 6], length 0 
    0x0000: 4500 003c d9fb 4000 4006 625a 51a4 2d8f E..<[email protected]@.bZQ.-. 
    0x0010: 51a4 2d8f dbe8 0017 0bb8 87f2 0000 0000 Q.-............. 
    0x0020: a002 8018 fe94 0000 0204 400c 0402 080a [email protected] 
    0x0030: 0238 5e09 0000 0000 0103 0306   .8^......... 
16:37:00.446581 IP 1.164.45.143.telnet > 1.164.45.143.56296: Flags [R.], seq 0, ack 196642803, win 0, length 0 
    0x0000: 4500 0028 0000 4000 4006 3c6a 51a4 2d8f E..([email protected]@.<jQ.-. 
    0x0010: 51a4 2d8f 0017 dbe8 0000 0000 0bb8 87f3 Q.-............. 
    0x0020: 5014 0000 41bf 0000      P...A... 
+1

看看這裏:http://stackoverflow.com/questions/4725625/is-there-a-telnet-library-for-javascript –

回答

2

你可以用javascript做的最好的事情是使用XMLHttpRequest的AJAX請求。如果你的telnet服務器可以處理一堆垃圾命令,然後它會達到好的命令,那麼你就沒有問題了。 AJAX請求可以連接到telnet服務器並使用POST機制發送純文本命令。遠程登錄服務器首先會收到HTTP標頭,在它到達POST主體中的有效Telnet命令之前,它將用「無效命令」錯誤忽略它。

var xtel = new XMLHttpRequest(); 
// replace 123.123.123.123 with the correct IP address 
xtel.open("POST", "http://123.123.123.123:23", true); 
// you won't be able to get a proper response from the telnet server 
xtel.onreadystatechange = function() {return true;} 
xtel.send("valid command 1" + "\n" + "valid command 2" + "\n"); 

這將是類似於......

<> telnet 123.123.123.123 23 
<> GET/HTTP/1.1 
<> ACCEPT: */* 
<> HOST: 123.123.123.123 
<> 
<> valid command 1 
<> valid command 2 

然而,上面是一個雜牌和你最好的選擇是使用PHP的插座http://php.net/manual/en/function.stream-socket-client.php進行連接,併發送指令(S )。

+1

我已經嘗試過你的例子抓住使用nc -l 23的原始但我沒有收到任何東西。 – YumYumYum

+1

#tcpdump'port 23'這也沒有得到任何東西。 – YumYumYum

+0

運行javascript的客戶端機器是否可以訪問這些telnet服務器(防火牆/路由)? –

相關問題