【发布时间】:2015-05-01 04:03:56
【问题描述】:
我正在为在 Tcp 和 Sockets 上运行的聊天构建服务器和客户端,我希望客户端处理多个连接(到服务器),所以我创建了一个名为“客户端”的类来管理异步连接,这样我就可以同时运行更多实例,例如:
Dim ConnectionToServer1 as new Client
Dim ConnectionToServer2 as new Client
因为当“连接”接收到消息时它是异步的,所以它会生成一个事件(AsyncCallback),我可以在其中将接收到的字节转换为字符串。
问题是:我试图从 Client 类内部将此字符串设置为我的 Form 上的 RichTextBox,但没有任何反应,我试图在表单代码中创建一个委托,但没有任何效果,这是唯一的方法我能够将接收到的消息放入 RichTextBox 是通过在存储最后一条消息的 Client 类中创建一个名为 LastMessage 的公共变量(每次接收到消息时,子都会覆盖字符串),然后运行创建的线程通过不断检查数据的表单(因为线程是由表单创建的,它可以访问控件,包括 RichTextBox,对吗?) 虽然我觉得这有点笨拙,但有没有其他方法(可能通过代表?)我可以做到吗?
这里有一些代码: 客户端类:http://pastebin.com/GF9um8Ss 表格代码:http://pastebin.com/xW7mDj8j
【问题讨论】:
标签: vb.net multithreading tcp client server