c# Socket异步连接服务器端

Socket基本流程图

一、初始化socket并开启监听

        /// <summary>
        /// 开启服务器端
        /// </summary>
        /// <param name="_port"></param>
        public void MStartServerMode(int _port = 6000)
        {
            //舒适化一些事件
            MInitServerMode(1);

            if (MReceive)
            {
                MPort = _port;

                //实例化socket
                MSSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

                //绑定服务器ip和端口,直接就IPAddress.Any就好
                MSSocket.Bind(new IPEndPoint(IPAddress.Any, MPort));

                //设置监听队列
                MSSocket.Listen(100);

                //开始异步监听,MAcceptCallBackMode是回调函数
                MSSocket.BeginAccept(new AsyncCallback(MAcceptCallBackMode), MSSocket);

                //开启一个线程发送心跳
                Thread mIsConnectThread = new Thread(MSendHeartBeatMode);

                mIsConnectThread.IsBackground = true;

                mIsConnectThread.Start();

                //开启一个线程监听服务器连接情况
                Thread mConnectStatusThread = new Thread(MDetectionConnectStatusMode);

                mConnectStatusThread.IsBackground = true;

                mConnectStatusThread.Start();

            }

        }

二、监听客户端连接

    /// <summary>
    /// 开始监听
    /// </summary>
    private void MAcceptCallBackMode(IAsyncResult ar)
    {
        //退出循环用
        if (MReceive)
        {
            //有客户端接入
            Socket mClientSocket = MSSocket.EndAccept(ar);

            //存储已连接的客户端
            MClientSocketList.Add(mClientSocket);

            MHeartTime mHeartTime = new MHeartTime();

            //存储服务器向此socket发送和接收心跳的时间的集合
            MDetectionHeartDic.Add(mClientSocket, mHeartTime);

          
            //使用事件通知前端有客户端连接
            if (MAddClientListEvent != null)
            {
                MAddClientListEvent(mClientSocket);
            }

            //开始接收消息&#
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值