当前位置: 代码迷 >> C# >> C#服务器端积极回复客户端的请求
  详细解决方案

C#服务器端积极回复客户端的请求

热度:55   发布时间:2016-05-05 03:27:52.0
C#服务器端主动回复客户端的请求
使用的socket通信。当Android客户端向服务器端发送一个请求,服务器端会处理该请求并且返回一个结果给客户端。现在服务器我用的异步操作来完成数据的接受,客户端的连接暂时用Combobox来存储的。但这需要手动选择哪个客户端才会发送。我该怎么做才能使服务器接收客户端的请求后,能主动的把处理结果发送到相应的客户端。
------解决思路----------------------
在收到请求的时候,你能知道是哪个客户端(socket)发送过来的请求
异步接收完成,触发你的处理代码,处理完事后应答

------解决思路----------------------
引用:
 try
            {
                //完成异步接收连接请求的异步调用
                //将连接信息添加到列表和下拉列表中
                Socket handle = listener.EndAcceptSocket(ar);
                MyFriend frd = new MyFriend(handle);
                comboBoxClient.Invoke(Addfriend, frd);
                AsyncCallback callback;
                //继续调用异步方法接收连接请求
                if (IsStart)
                {
                    callback = new AsyncCallback(AcceptCallBack);
                    listener.BeginAcceptSocket(callback, listener);
                }
                //开始在连接上进行异步的数据接收
                frd.ClearBuffer();
                callback = new AsyncCallback(ReceiveCallback);
                frd.socket.BeginReceive(frd.Rcvbuffer, 0, frd.Rcvbuffer.Length, SocketFlags.None, callback, frd);
                
            }
            catch
            {
                //在调用EndAcceptSocket方法时可能引发异常
                //套接字Listener被关闭,则设置为未启动侦听状态
                IsStart = false;
            }


你就需要使用 handle 来返回信息啊,所以这就解决问题的前一半。

而它Receive的时候,如果收到客户端提交信息,自然就知道这个 handle 所配对的客户端信息。这就是解决问题的后一半。
  相关解决方案