当前位置:编程学习 > C#/ASP.NET >>

C# Socket编程

用TcpClient.Client.Send();发送信息后,怎么能知道信息正确的到达了指定的TcpClient?当服务器端用此方法向客户端发送信息的时候,客户端将窗体关闭的时候,发送是不会发生错误的。这个问题怎么解决?
    在win2000系统下,TcpClient没有Disconnect()的方法,只有在XP或更高的系统下才有此方法。如果只用TcpClient的Close()方法,此时Tcpclient.Client的Connected为false,但此对象不为null。tcpClient.Client.Shutdown(SocketShutdown.Both)也不行。当TcpClient的Connected属性为False时,怎么将它的状态改为true?不能用TcpClient.connect()方法,因为此时虽然使用Close()方法,但TcpClient对象没有释放依然存在。
    大家有没有这方面的资料? --------------------编程问答-------------------- 沙发,帮忙顶
--------------------编程问答-------------------- 发送信息后,怎么能知道信息正确的到达了指定的TcpClient?
没有发送异常就到了服务器,至于服务器是否处理,就是另外的事了。 --------------------编程问答-------------------- 目前好象没有很好的处理方式,关注``` --------------------编程问答-------------------- send()后,服务器正常接收并处理后,发送标志给client就行了

用Receive()接收服务器发加的标志


客户端将窗体关闭的时候同时发送标志到服务器端

--------------------编程问答-------------------- Receive()接收,然后加个提醒.建议使用循环监听,因为或许有其他的连进来,好放线程池,同时可以对联进来的做try,防止非法断开(如果catch到,发送"对象.stop"就可以结束并释放对象). --------------------编程问答-------------------- while (true)
                {
                    //接受挂起的请求
                    Socket s = tcpLister.AcceptSocket();
                    Byte[] stream = new Byte[80];
                    int i = s.Receive(stream);
                    message= System.Text.Encoding.UTF8.GetString(stream);
                    this.textBox1.AppendText(message);
                    if ((WindowState == FormWindowState.Minimized) && (th == null))
                    {
                        th = new Thread(new ThreadStart(So));
                        th.Start();
                    }

--------------------编程问答-------------------- 我也正在面临这问题,请问楼主你解决了吗??
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,