如何使我的TCP套接字服务器异步?

时间:2012-12-11 23:36:24

标签: vb.net sockets asynchronous tcpclient tcplistener

我目前已经建立了一个对等的“聊天”程序。它目前使用计时器来接收消息,并使用客户端将它们发送给运行该程序的其他人。我真的想让整个系统异步,所以我不再抱怨主要的可执行文件冻结等等。

我已将所有代码(VB.net)粘贴到此处:http://pastebin.com/EcrtCgVc

有人可以协助我使这个系统更快,异步或做得更好。

如果您想要指向完整来源的保管箱的链接,我也可以提供此链接。

2 个答案:

答案 0 :(得分:0)

我建议你看看这个示例项目:

  

异步服务器套接字示例

     

http://msdn.microsoft.com/en-us/library/fx6588te%28v=vs.110%29.aspx

您可以将此示例与此示例结合使用:

  

异步客户端套接字示例

     

http://msdn.microsoft.com/en-us/library/bew39x2a%28v=vs.110%29.aspx

您可能需要在服务器代码中使用异步方法,并且可以使用Delegate Sub使服务器在另一个线程中运行,因此主线程(UI)仍将响应。 http://msdn.microsoft.com/en-us/library/ms172879.aspx

答案 1 :(得分:-1)

不看你的代码,我也在使用套接字编程。 “不要将GUI代码与业务代码混合在一起。” 就像jgauffin所说,你不应该将在后台运行的代码与GUI结合起来。

例如,如果您使用套接字接受数据或连接,则必须在新线程上运行该方法。 实施例...

Public Sub YourMainSub()
    Dim threadOne As New System.Threading.Thread(AddressOf ListenCode)
    threadOne.Start()
    'Put other code here.....
End Sub
Public Sub ListenCode()
    Dim newPerson = yourServer.Accept()
    'Or
    Dim newData = yourServer.Receive()
End Sub

很抱歉,如果代码不完全正确。我按记忆键入了它。