读书人

关于socket client异步接收数据解决方

发布时间: 2012-10-17 10:25:47 作者: rapoo

关于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里面的代码移到一个线程里处理,

读书人网 >C#

热点推荐