本文目录一览:
C# 服务器端如何保存客户端的Socket
首先,你得有一个存放SOCKET套接字的集合休,比如LIST;也就是说把每次服务器端接受连接以后返回的套接字存放在这个列表里面;定义一个方法循环检测这个列表(LIST),检测的方法为用列表里面的每个套接字向客户端发送一次数据,然后从异常捕获里面得知客户端是否断开:
try
{
//遍厉集合列表里面每个套接字对象,并使用其对象向各个客户端发送消息(代码)
}
catch(SocketException exp)
{
if(exp.ErrorCode==10052)//10052表示客户端已经断开连接,我印象中应该是10052,如果不是可以去MSDN上查下,
//清除集合列表里面的相应套接字(代码)
}
还有一点需要注意,如果用的是不同步的集合对象,比如LIST,那如果在循环中要改变它里面的元数的话需对其锁定后再修改,比如:lock(list),要不然会出错!
C# Socket异步通信 怎样客户端之间建立通信
聊天记录的存放很简单,在客户端连续写文本文件就行了。
客户端之间聊天可以考虑通过服务器统一中转,或者将客户端加上客户端间直连功能(连接通道由服务器维护)。
参考一下这个吧
C#将socket传输来的数据保存到文件中
个人建议使用callback方法好,主动的还不如被动方法好,主要考虑的是线程堵塞问题,至于数据拥塞,那可以采用异步通信啊,服务器接收数据后给个确认信号返回客户端,客户端再考虑发下一个报文!