注册 登录
编程论坛 C# 论坛

关于 TCP 异步通讯问题

dingdingvsjj 发布于 2014-07-27 12:09, 586 次点击
关于TCP异步通讯中,我一直有几个问题没搞明白
1.TCP异步通讯到底有什么作用???哪位大神能给我举个例子来说说不Orz
2.关于下面这段代码中WaitOne这个东西(阻止当前线程),这样写了以后那不是和TCP同步通讯是一样的效果了,都是要阻塞当前线程,那我干嘛还这么麻烦的写一个异步程序,直接写一个同步的多好啊。(这个程序是一本书上的TCP异步的例子)
程序代码:
private void but_connect_Click(object sender, EventArgs e)
        {
            try
            {
                client = new TcpClient(AddressFamily.InterNetwork);
                IPAddress ipadd = IPAddress.Parse(txt_hostname.Text.ToString());

 
                AsyncCallback requestCallBack = new AsyncCallback(RequestCallBack);
                allDone.Reset();

 
                client.BeginConnect(ipadd, 3000, requestCallBack, client);

 
                //public object Invoke(Delegate method, params object[] args);调用callback
                lb_state.Invoke(setlistboxcallback, string.Format("本机终结点:{0}", client.Client.LocalEndPoint));
                lb_state.Invoke(setlistboxcallback, "开始与服务器连接...");
                allDone.WaitOne();
            }
            catch (Exception ee)
            {
                lb_state.Invoke(setlistboxcallback, string.Format("错误:{0}", ee.Message));
            }
            finally
            {
            }

 
        }

        

3.解决TCP异步这个问题,直接开启多线程不就好了吗,干嘛还要弄异步这个东西,多麻烦啊??
1 回复
#2
何事惊慌2014-08-01 22:27
多线程是随机的,不可能同步的哈,比如你发了10条信息,多线程是不可能按照顺序发的,他是随机发过去的,会影响阅读哦
1