C# Socket编程

syuko5460 2007-08-16 03:34:44
用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对象没有释放依然存在。
大家有没有这方面的资料?
...全文
279 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
liwenjing_19891214 2011-07-19
  • 打赏
  • 举报
回复
我也正在面临这问题,请问楼主你解决了吗??
wangerdong 2007-08-16
  • 打赏
  • 举报
回复
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();
}

Code従業員 2007-08-16
  • 打赏
  • 举报
回复
Receive()接收,然后加个提醒.建议使用循环监听,因为或许有其他的连进来,好放线程池,同时可以对联进来的做try,防止非法断开(如果catch到,发送"对象.stop"就可以结束并释放对象).
mpss 2007-08-16
  • 打赏
  • 举报
回复
send()后,服务器正常接收并处理后,发送标志给client就行了

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


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

sd5923150 2007-08-16
  • 打赏
  • 举报
回复
目前好象没有很好的处理方式,关注```
我不懂电脑 2007-08-16
  • 打赏
  • 举报
回复
发送信息后,怎么能知道信息正确的到达了指定的TcpClient?
没有发送异常就到了服务器,至于服务器是否处理,就是另外的事了。
godgreat 2007-08-16
  • 打赏
  • 举报
回复
沙发,帮忙顶

110,535

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧