예제 #1
0
        }     // recCallBack

        /// <summary>
        /// 回调函数发:送数据
        /// </summary>
        /// <param name="ar">the ar</param>
        public static void sendCallBack(IAsyncResult ar)
        {
            // 当前用户实例
            User currentUser = User.GetInstance();

            SendCallBackParam sendCallBackParam = (SendCallBackParam)ar.AsyncState;
            ListBox           lstBox_recMsg     = sendCallBackParam.lstBox_recMsg;
            string            strSend           = sendCallBackParam.strSend;

            DelegateMem.AppendDelegate appendString = sendCallBackParam.appendString;

            try
            {
                //异步通信 结束数据的异步发送
                currentUser.socket.EndSend(ar);

                strSend = "发:" + strSend;

                // 在右侧显示
                string showStr = strSend.PadLeft(lstBox_recMsg.Width / 10, ' ');
                lstBox_recMsg.Invoke(appendString, lstBox_recMsg, showStr);
            } // try

            catch (System.Exception ex)
            {
                SocketHandler.ShutDownConn(currentUser.socket);
                lstBox_recMsg.Invoke(appendString, lstBox_recMsg, "服务器断开了TCP连接");
            } // catch
        }     // sendCallBack
예제 #2
0
        }     // recvCallBack

        /// <summary>
        /// 发送数据
        /// </summary>
        /// <param name="frd"></param>
        /// <param name="strData"></param>
        private static void sendData(MyFriend frd, string strData)
        {
            // 获取在线用户列表的实例
            Friends friends = Friends.GetInstance();

            try
            {
                byte[] msg = Encoding.UTF8.GetBytes(strData);

                //初始化相关参数
                SendCallBackParam sendCallBackParam = new SendCallBackParam(frd);

                //异步调用
                AsyncCallback callBack = new AsyncCallback(CallBackFunc.sendCallBack);
                frd.socket.BeginSend(msg, 0, msg.Length, SocketFlags.None, callBack, sendCallBackParam);
            } // try

            catch (System.Exception ex)
            {
                lock (friends)
                {
                    friends.friendList.Remove(frd);
                }
                frd.Dispose();
            } // catch
        }     // sendData
예제 #3
0
        } // btn_sendMsg_Click

        /// <summary>
        /// 群聊通信
        /// </summary>
        private void sendData()
        {
            User currentUser = User.GetInstance();

            try
            {
                string finalStr = BuildMsg.buildSendMsg("group", userName, currentUser.socket.LocalEndPoint.ToString(), destName, str_Send);
                byte[] msg      = Encoding.UTF8.GetBytes(finalStr);

                //始化需要传入的参数
                SendCallBackParam sendCallBackParam = new SendCallBackParam(
                    str_Send,
                    lstBox_recMsg,
                    appendString);
                // 定制并实例化回调方法
                AsyncCallback callBack = new AsyncCallback(CallBackFunc.sendCallBack);

                // 开始异步发送数据
                currentUser.socket.BeginSend(msg, 0, msg.Length, SocketFlags.None, callBack, sendCallBackParam);
            } // try

            catch (System.Exception ex)
            {
                SocketHandler.ShutDownConn(currentUser.socket);
                lstBox_recMsg.Invoke(appendString, lstBox_recMsg, "服务器断开了TCP连接");
            } // catch
        }     // sendData
예제 #4
0
        }     // sendData

        /// <summary>
        /// 发送消息
        /// </summary>
        /// <param name="ar"></param>
        public static void sendCallBack(IAsyncResult ar)
        {
            // 初始化关键参数
            Friends           friends           = Friends.GetInstance();
            SendCallBackParam sendCallBackParam = (SendCallBackParam)ar.AsyncState;
            MyFriend          frd = sendCallBackParam.frd;

            try
            {
                frd.socket.EndSend(ar);
            } // try

            catch (System.Exception ex)
            {
                lock (friends)
                {
                    friends.friendList.Remove(frd);
                }
                frd.Dispose();
            } // catch
        }     // sendCallBac