SerializeOnlineList(),序列化在线列表,向客户端返回序列化后的字节数组。代码如下所示:
private byte[] SerializeOnlineList()
{
StringCollection onlineList = new StringCollection();
foreach (object o in _transmit_tb.Keys)
{
onlineList.Add(o as string);
}
IFormatter format = new BinaryFormatter();
MemoryStream stream = new MemoryStream();
format.Serialize(stream, onlineList);
byte[] ret = stream.ToArray();
stream.Close();
return ret;
}
3.1.2 服务器的启动和关闭
(1) 启动服务器的监听功能
启动前服务器先选择一个端口号,并获得服务器的IP地址,获取IP地址的代码如下:
IPAddress _ip = Dns.GetHostAddresses(Dns.GetHostName())[2];
_tcpl = new TcpListener(_ip, _port);
_tcpl.Start();
若IP地址,端口号获取成功,启动服务器的监听功能。
配置监听的端口号代码如下:
public void GetConfig()
{
string portParam;
Console.Write("请输入监听端口,直接回车则接受默认端口8888: ");
portParam = Console.ReadLine();
if (portParam != string.Empty)
{
if (!int.TryParse(portParam, out _port) || _port < 1023 || _port > 65535)
{
_port = 8888;
Console.WriteLine("端口号不合法,默认端口号被接受!");
}
}
}
服务器启动监听后,要监听的内容有:
验证用户的唯一性;
将新连接转入转发表并创建线程为其服务;
向所有客户端发送系统消息;
其代码如下所示
public void StartUp()
{
IPAddress _ip = Dns.GetHostAddresses(Dns.GetHostName())[2];
_tcpl = new TcpListener(_ip, _port); C#+Socket即时通信程序设计(8):http://www.751com.cn/jisuanji/lunwen_8502.html