日期:2014-05-17  浏览次数:21041 次

C#UDP异步通信 服务器端怎样实现一个端口监听一个端口负责通信
在网上找了个例子,服务器端只有一个端口负责通信,现在要做C/S多窗体应用程序,希望服务器再收到客户端的第一个数据后,第二个数据从另一个端口收到,并通过这个端口与客户端进行会话。想了好久都不知道怎样改才是正确的,大家帮忙看下
服务器端:
public class StateObject
    {
        //服务器端
        public Socket udpServer = null;
        //接受数据缓冲区
        public byte[] buffer = new byte[1024];
        //远程终端
        public EndPoint remoteEP;
    }
public class AsynUdpServer
    {
        public StateObject state;

        #region 服务器绑定终端节点
        public void ServerBind()
        {
            //主机IP
            IPEndPoint serverIp = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8686);
            Socket udpServer = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            udpServer.Bind(serverIp);
            Console.WriteLine("server ready...");
            IPEndPoint clientIp = new IPEndPoint(IPAddress.Any, 0);
            state = new StateObject();
            state.udpServer = udpServer;
            state.remoteEP = (EndPoint)clientIp;
            AsynRecive();
        }
        #endregion

        #region 异步接受消息
        public void AsynRecive()
        {
            state.udpServer.BeginReceiveFrom(state.buffer, 0, state.buffer.Length, SocketFlags.None, ref state.remoteEP,
                new AsyncCallback(ReciveCallback), null);
        }
        #endregion

        #region 异步接受消息回调函数
        public void ReciveCallback(IAsyncResult asyncResult)
        {
            if (asyncResult.IsCompleted)
            {
                //获取发送端的终节点
                IPEnd