关于socket服务器的介绍在此处就不做很详细的解说,下面简洁做下总结:
首先:实例化并设置socket实例对象
- a. 创建ip地址和端口( List<string> listIP = getIP();----我此处是自动获取本机IPv4地址然后绑定在下拉框里)
- b.绑定监听地址(在监听之前先判断该地址是否已经被监听,判断到没有被监听再绑定进行监听---- IPEndPoint localep = new IPEndPoint(IPAddress.Parse(comboBoxIP.Text), int.Parse(textBoxServerPort.Text));//socket绑定监听地址)
- c. 启动对具有最大挂起连接数的传入连接请求的侦听。( listener.Start(10);)
下一步就是在监听方法中启动异步方式接收客户端的连接请求以及发过来的信息
我们调用BeginReceive的时候,系统会幕后开启一个独立的线程,用以执行回调函数及对EndReceive的阻塞(block),直到EndReceive从socket的缓冲区中读到数据或者socket引发异常
异步连接客户端 : AsyncCallback callback = new AsyncCallback(AcceptCallBack)
listener.BeginAcceptSocket(callback, listener);
在连接上再进行异步接收数据: callback = new AsyncCallback(ReceiveCallback);
frd.socket.BeginReceive(frd.Rcvbuffer, 0, frd.Rcvbuffer.Length, SocketFlags.None, callback, frd);
我这个是基于C#的服务器小例子,自动获取本机的IP地址,与客户端进行异步通讯,并且将连接上的客户端的地址存储到数据库,用text文本记录相关信息