2017-05-12 64 views
1

我有一個用C#編寫的簡單的TCP服務器,以指定的時間間隔ping數據並接收到我有NodeJS應用程序的數據。NetworkStream寫入()事件名稱

我目前從NetworkStream像這樣發送數據:

private NetworkStream nwStream; 
nwStream = clientMachine.GetStream(); 

nwStream.Write(buffer, 0, buffer.Length); // Inside a loop 

和接受它喜歡的NodeJS:

client.on('data', (data) => {

有沒有什麼辦法來發出不同的事件,除了我的C#TCP服務器上的data?使用Socket.io我可以socket.emit('customEvent', someData)並收到它像socket.on('customEvent', receivedData)但我不確定我是否可以在C#中實現此目的。

我沒有使用Socket.io,上面只是我想要實現的行爲的一個例子。

+0

如果你正在與socket.io交談,你需要尊重socket.io協議:https://github.com/socketio/socket.io-protocol - 大概是告訴你如何編碼自定義事件名字 –

+0

我不是在和socket交談,那只是我意識到的行爲的一個例子。我在C#中使用'NetworkStream',在Node中使用'net.Socket()'。 –

+0

如果你在兩端使用原始套接字,你只需要設計自己的協議,在每個邏輯框架中嵌入一個名字...... TCP套接字本身沒有任何這樣的機制,也沒有原始數據包 –

回答

1

如果你在兩端使用原始套接字,你只需要設計自己的協議,在每個邏輯框架中嵌入一個名字...... TCP套接字本身沒有任何這樣的機制,也沒有生數據包。

這樣做的一個典型的/簡單的方法可能是這樣的:

{Event name, UTF8}\r\n{length, 4 bytes little endian integer}{payload, length bytes} 

如果賽事名稱可能包括換行/換行,那麼你需要使用有效載荷長度/有效載荷的方式對事件也是名字。