上一章,我们简单的介绍了一下Cowboy.Sockets的源码结构。
这里我们主要来看一下如果使用Cowboy.Sockets提供的源码建立一个通讯服务器。
我们需要先准备一个TCP服务器的配置,只需要简单的new一下就好了。
没什么特别的,源码中已经为大家准备好了一些默认配置,包含发送和接收数据的缓冲区大小,是否保持长连接,
以及超时计算等等。(想要搞追其细节的同学可以F12进去看一下)
var _config = new TcpSocketServerConfiguration();
接下来我们就需要创建一个Server的实例。与我们以前使用Socket相同,我们任然需要准备一个IP和端口号。
自己的IP就OK了,或者你可以直接使用127.0.0.1。另外我们需要保证我们端口号是没有被占用的。
TcpSocketServer_server = new TcpSocketServer(IPAddress.Parse("127.0.0.1"), 2222, _config);
到这里为止,我们的服务端已经创建好了,
在Cowboy.Sockets中通讯连接、断开、接收数据等操作是通过暴露事件的方式来实现的,我们需要加上如下代码:
_server.ClientConnected += _server_ClientConnected;
_server.ClientDataReceived += _server_ClientDataReceived;
_server.ClientDisconnected += _server_ClientDisconnected;
最后,别忘了打开服务端的监听。
_server.Listen();
对于Cowboy.Sockets的几个连接、断开、接收数据操作也非常简单。
//当客户端与服务端建立连接时触发
private void _server_ClientConnected(object sender, TcpClientConnectedEventArgs e)
{
//这里是当客户端与服务端建立连接时做的事情
// e.Session.SessionKey当客户端建立连接之后产生的会话ID,我们可以记录下来方面后面进行消息发送
}
//当服务端接收到数据时触发
private void _server_ClientDataReceived(object sender, TcpClientDataReceivedEventArgs e)
{
//这里是当服务端接收到数据时做的事情
}));
}
//当客户端与服务端断开连接时触发
private void _server_ClientDisconnected(object sender, TcpClientDisconnectedEventArgs e)
{
//这里当客户端与服务端断开连接时做的事情
}
我们还可以进行消息发送的操作:
byte[] buffer = Encoding.Default.GetBytes("你想要发送的消息,类型为string");
_server.SendTo(_server.GetSession("客户端连接时产生的会话ID"), buffer);
如果我们想要手动断开连接,我们可以这样做。
_server.Shutdown();