关于socket client异步接收数据
- C# code
private void connect_Click(object sender, EventArgs e) { try { IPAddress dcip = IPAddress.Parse(dccip.Text); int dcport = int.Parse(dccport.Text); dc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint dcc = new IPEndPoint(dcip, dcport); dc.Connect(dcc); } catch (Exception err) { MessageBox.Show(err.Message, "连接DCC出错", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } //下面要怎么办。。。 }
winform的
这个是客户端,要求是客户端和服务器长连接,服务端随时可能发送数据到客户端,这段代码写到这里不会了,如果是下面直接开始接收数据,界面就卡死不能用了。。。需要的是那种,界面能继续使用,又不影响客户端给服务器发送消息,又可以随时接收服务器发来的消息
[解决办法]
要么用多线程,要么用异步,其实异步不一定好用,很多情况下多线程反而简单,
用多线程的话,开一个线程listen服务器的消息,接受到消息放进一个缓冲区中,界面再从缓冲区取消息,做好同步控制,
发送消息也一样,就你现在的代码,connect_Click里面的代码移到一个线程里处理,