2013-03-16 109 views
0

下面的VB腳本可以用Javascript來打開IP錢箱嗎?Winsock.SendData等效於Javascript?

Private Sub CashDrawerConnect_Click() 
    Winsock1.Close 
    ipaddr = "192.168.2.5" 
    Winsock1.RemoteHost = ipaddr 
    Winsock1.RemotePort = 30998 
    Winsock1.Connect 
    Sleep 250 
    TxtOpStatus = "Connection to the cash drawer at " & ipaddr & " is established..." 
    TxtOpStatus.Refresh 
End Sub 
Private Sub CashDrawerOpen_Click() 
    If Winsock1.State = sckConnected Then 
    Winsock1.SendData "opendrawer\0a" 
    Else 
    TxtOpStatus = "Not connected to the device" 
    TxtOpStatus.Refresh 
    End If 
End Sub 

回答

1

你可以在javascript上做,但不能在瀏覽器上運行。

您需要安裝nodejs並直接從控制檯運行您的js文件。

這是一個會連接你的抽屜和你的榜樣發送「opendrawer」命令的一個小例子:

var net = require('net'); 
var client = net.connect({port: 30998, host: "yourip"}, function() { 
    client.write("opendrawer\0a"); 
}); 

但是,如果服務器可以訪問抽屜中的JavaScript代碼可以只讓一個請求服務器負責打開與抽屜的連接併發送有效載荷(opendrawer)。

如果你使用php,你可以看看sockets documentation

+0

您可以從.NET運行JavaScript(JScript) – 2013-03-16 00:56:16

+0

嗯......實際上我想從iPad上的網絡應用程序運行這個功能,所以我猜Javascript已經不存在了。如果在本地網絡上有一臺php服務器,可以通過php來完成嗎? – 2013-03-16 00:59:51

+0

@JasonWood是的,你可以這樣做,我編輯了我的答案來反映這一點。 – albertein 2013-03-16 01:04:46

0

使用VB和JavaScript的調用大多是相同的,你只是要適應它的語言。 http://www.ostrosoft.com/oswinsck/oswinsck_javascript.asp

下面是使用WinSock從JScript中

var oWinsock; 
var sServer = "192.168.2.5"; 
var nPort = 3098; 
var bClose = false; 

oWinsock = new ActiveXObject("OSWINSCK.Winsock"); 
// Hooking up handlers 
WScript.ConnectObject(oWinsock, "oWinsock_"); 
oWinsock.Connect(sServer, nPort); 
WScript.Echo("Invalid URL"); 
bClose = true; 

function oWinsock_OnConnect() { 
    oWinsock.SendData('Your data'); 
} 

function oWinsock_OnDataArrival(bytesTotal) { 
    var sBuffer = oWinsock.GetDataBuffer(); 
    sSource = sSource + sBuffer; 
} 

function oWinsock_OnError(Number, Description, Scode, Source, 
    HelpFile, HelpContext, CancelDisplay) { 
    WScript.Echo(Number + ': ' + Description); 
} 

function oWinsock_OnClose() { 
    oWinsock.CloseWinsock(); 
    WScript.Echo(sSource); 

    oWinsock = null; 
    bClose = true; 
} 

while (!bClose) { 
    WScript.Sleep(1); 
} 

在瀏覽器中的一個片段?不是,但你可以使用WebSockets http://en.wikipedia.org/wiki/WebSocket

你需要實現一個WebSocket服務器,所以如果你需要直接與套接字通話,你不能從瀏覽器中完成。但是你可以實現一個在套接字服務器和WebSocket服務器之間傳遞信息的代理服務器。

如果您不需要雙向溝通,最好的辦法是讓您的服務器提供一個包裝該套接字請求的web服務。然後你的客戶可以只做一個AJAX調用。

+0

網絡套接字不是原始的tcp套接字,它們是遵循websocket協議的tcp套接字,所以它們沒有用於將它們連接到不會說websocket的東西,比如現金抽屜 – albertein 2013-03-16 01:03:19

+0

@albertein您需要編寫代理websocket服務器,如我所說 – 2013-03-16 01:05:12