【发布时间】:2016-02-24 07:51:49
【问题描述】:
我搜索了一个有效的 TCP 库,找到了这个:https://codereview.stackexchange.com/questions/24758/tcp-async-socket-server-client-communication
我从@Jesse C. Slicer 的回答中实现了六个重构类,对其进行了修改以允许任意端口号(在StartListening() 方法中添加了int Port 参数)。
我已经打开了与 telnet/PuTTY 的连接,但我只收到来自 PuTTY 的第一个键入的字符/init 信息,而没有更多信息。服务器不会停止,因为我可以打开新连接并接收每一条消息。
我尝试了以下代码(异步部分有点问题,它实际上阻塞了程序的其余部分,这就是我使用BackgroundWorker的原因):
private BackgroundWorker serverThread;
private IAsyncSocketListener server;
public Connection()
{
server = AsyncSocketListener.Instance;
serverThread = new BackgroundWorker();
serverThread.DoWork += ServerThread_DoWork;
serverThread.RunWorkerAsync();
}
private void Server_OnReceived1(int id, string msg)
{
System.Diagnostics.Debug.WriteLine($"String: {msg}");
System.Diagnostics.Debug.WriteLine($"Bytes: {string.Join(", ",msg.Select(x=>(int)x))}");
}
private void ServerThread_DoWork(object sender, DoWorkEventArgs e)
{
server.MessageReceived += Server_OnReceived1;
server.StartListening(1093);
}
【问题讨论】: