火我已經創建了剛剛打印出每當一個新的請求被接收線路的服務器:我連接到它的netcatAppServer.NewRequestReceived事件不會在SuperSocket
var server = new AppServer();
if (!server.Setup(2012) || !server.Start()) {
return;
}
server.NewSessionConnected += (session) => Console.WriteLine("new connection");
server.NewRequestReceived += (session, requestInfo) => Console.WriteLine("new request");
:
C:\Users\sashoalm>nc localhost 2012 test test ^C C:\Users\sashoalm>
它打印new connection
,但從不打印new request
,儘管在netcat中輸入2行。我知道每次輸入完整的一行時,netcat都會將文本發送到服務器(這就是netcat的工作方式)。
編輯:我發現可能會問同樣的事情,另一個(不是很好的措辭)懸而未決的問題 - How to send data to server using supersocket library,但我不能完全肯定,如果是同樣的問題。那傢伙試圖從代碼中發送數據。
另一個相關的問題 - C# SuperSocket without protocol。他們在那裏談論協議。如果您沒有指定一個SuperSocket,是否有默認協議?它是HTTP還是其他?
它使用** telnet localhost 2012 **打印'新連接'和'新請求'。 – jsanalytics
@jstreet你說得對。它適用於telnet,但不適用於netcat。我不明白會有什麼不同。也許它需要\ r \ n行尾和netcat只使用\ n,我不知道。 – sashoalm
如果您構建一個簡單的客戶端併發送一個字符串列表,其中一些使用'\ r \ n',另一些使用沒有它,您將看到不同之處:列表中沒有'\ r \ n'的字符串被串聯與下一個確實擁有它,形成一個單一的請求。 – jsanalytics