Socket.Receive的问题。进入断点后没有报任何错,没获取到int就跳出断点
             IPAddress ipAddress = IPAddress.Parse(ip);
            IPEndPoint localEndPoint = new IPEndPoint(ipAddress, SPort);
            Array.Resize(ref SckSs, 1);
            SckSs[0] = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            SckSs[0].Bind(localEndPoint);
            SckSs[0].Listen(50);
            //20171214
            byte[] bytes;
            Socket handler = SckSs[0].Accept();
            string data = null;
            while (true)
            {

                bytes = new byte[1024];
                try
                {
                    int bytesRec = handler.Receive(bytes);
                    data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
                    if (data.IndexOf("<EOF>") > -1)
                    {
                        break;
                    }
                }
                catch (ThreadAbortException e)
                {
                    Console.WriteLine("{0} Error code: {1}.", e.Message);
                }
                catch (SocketException e)
                {
                    Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
                }
                catch(Exception e)
                {
                    Console.WriteLine("{0} Error code: {1}.", e.Message);
                }

            }

断点放在int bytesRec = handler.Receive(bytes);进入断点后F10直接跳出了断点,没有继续执行下一步,也没有任何报错和进catch。这是和传送的数据有关系吗?
有没有大神 求告知!谢谢!!!

2个回答

receive函数不设置超时,会一直等待客户端数据。程序进入阻塞模式

data += Encoding.ASCII.GetString(bytes, 0, bytesRec);
你确认data的内容是纯文本么,你在哪里下的断点,跳出到哪里了,说清楚

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问