Socket监听



     bool isSend = false;
                    Socket sendSocket;
                    while (!isSend)
                    {
                        sendSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                        try
                        {
                            sendSocket.Connect(SocketIP, SocketPort);
                        }
                        catch
                        {
                            Error err = new Error();
                            err.WriteError(0, "/Data QClient /Id " + Num + " /QueueID  " + FrmMain.strGueueNo + "  /Subscribe " + strType + " ");
                            isSend = true;
                            sendSocket.Shutdown(SocketShutdown.Both);
                            sendSocket.Close();
                            FrmMsg msg = new FrmMsg("请确认网络是否正常或重新取号!");
                            msg.ShowDialog();
                            msg.Close();
                            msg.Dispose();
                            GoToLogin();
                            return;
                        }



                        if (sendSocket.Connected)
                        {
                            #region 发送数据
                            Encoding gb2312 = Encoding.GetEncoding("gb2312");


                            //byte[] buffer = gb2312.GetBytes("/Data QClient /Id Y0004 /QueueID  " + FrmMain.strProjectNo + "  /Subscribe True ");
                            byte[] buffer = gb2312.GetBytes("/Data QClient /Id " + Num + " /QueueID  " + FrmMain.strGueueNo + "  /Subscribe " + strType + " ");
                            int retc = sendSocket.Send(buffer);
                            if (retc == -1)
                            {
                                Error err = new Error();
                                err.WriteError(2, "/Data QClient /Id " + Num + " /QueueID  " + FrmMain.strGueueNo + "  /Subscribe " + strType + " ");
                                isSend = true;
                                sendSocket.Shutdown(SocketShutdown.Both);
                                sendSocket.Close();
                                FrmMsg msg = new FrmMsg("服务器忙!请重新取号");
                                msg.ShowDialog();
                                msg.Close();
                                msg.Dispose();
                                GoToLogin();
                                return;
                            }
                            #endregion


                            #region 获取数据
                            byte[] inOptionValues = new byte[4 * 3];
                            BitConverter.GetBytes((uint)1).CopyTo(inOptionValues, 0);
                            BitConverter.GetBytes((uint)1000).CopyTo(inOptionValues, 4);
                            BitConverter.GetBytes((uint)500).CopyTo(inOptionValues, 8);
                            sendSocket.IOControl(IOControlCode.KeepAliveValues, inOptionValues, null);


                            byte[] buffer_Call = new byte[sendSocket.ReceiveBufferSize];



                            sendSocket.ReceiveTimeout = 10000;   //设置超时时间
                            try
                            {
                                int m_read = sendSocket.Receive(buffer_Call, SocketFlags.Partial);


                                System.Text.Encoding chs = System.Text.Encoding.GetEncoding("gb2312");


                                string str_Read = chs.GetString(buffer_Call, 0, m_read);


                                string[] str_split = str_Read.Split(',');


                                if (str_split[0] == "完成" && str_split[1] == strQueueNum) //评价
                                {
                                    isSend = true;
                                    sendSocket.Shutdown(SocketShutdown.Both);
                                    sendSocket.Close();
                                }
                                else
                                {
                                    Error err = new Error();
                                    err.WriteError(1, "/Data QClient /Id " + Num + " /QueueID  " + FrmMain.strGueueNo + "  /Subscribe " + strType + " ");
                                    isSend = true;
                                    sendSocket.Shutdown(SocketShutdown.Both);
                                    sendSocket.Close();
                                    FrmMsg msg = new FrmMsg("服务器繁忙!请重新取号");
                                    msg.ShowDialog();
                                    msg.Close();
                                    msg.Dispose();
                                    GoToLogin();
                                    return;
                                }
                            }

   
catch (Exception e)     //捕捉超时这个事件g
                            {
                                Error err = new Error();
                                err.WriteError(1, "/Data QClient /Id " + Num + " /QueueID  " + FrmMain.strGueueNo + "  /Subscribe " + strType + " ");
                                isSend = true;
                                sendSocket.Shutdown(SocketShutdown.Both);
                                sendSocket.Close();
                                FrmMsg msg = new FrmMsg("请确认网络是否正常或重新取号");
                                msg.ShowDialog();
                                msg.Close();
                                msg.Dispose();
                                GoToLogin();
                                return;
                            }
                            #endregion
                        }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐天zhifengfly

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值