首页 新闻 会员 周边 捐助

Socket服务端第二次接收发送数据 客户端就卡死了

0
悬赏园豆:30 [已解决问题] 解决于 2014-07-09 13:52
      private void   StartInfo()
        {
            try
            {
                if (!ServerSocket.IsBound)
                {
                   IPHostEntry hostEntry = Dns.GetHostByName(Dns.GetHostName());
                   IPAddress address = hostEntry.AddressList[0]; 
                   ServerEndPoint = new IPEndPoint(address, 1122);
                    ServerSocket.Bind(ServerEndPoint);
                    ServerSocket.Listen(2);
                    ClientSocket = ServerSocket.Accept();
                }
                ReceveData = receveData();  //接收数据
                sendMessage(ReceveData);  //发送数据
            }
            catch (Exception ex)
            {
 
                log.Write("开启监听失败请检查服务端Ip地址是否匹配:" + ex.Message);
            }
        }
 
 
    /// <summary>
        /// 接收数据
        /// </summary>
        public string receveData()
        {
            string jasonMessage = "";
            try
            {
                while (true)
                {
 
                    Thread.Sleep(1);
                    byte[] clientByte = new byte[1024];
                    int bytelength = ClientSocket.Receive(clientByte);
                    if (bytelength > 0)
                    {
                        jasonMessage = Encoding.Default.GetString(clientByte);
                        return jasonMessage;
                    }
 
                    ClientSocket = ServerSocket.Accept();
 
                }
            }
            catch (Exception ex)
            {
                log.Write("接收数据错误原因:" + ex.Message);
                return null;
            }
 
        }
 
 
 // 发送
  void sendMessage(string jasonMessage)
        {
      
 
            //4.转换byte  
            byte[] sendByte = Encoding.Default.GetBytes(BallJason);
 
            //5. 发送
            ClientSocket.Send(sendByte);
            ClientSocket.Close();
 
}
SSS.M.AAA的主页 SSS.M.AAA | 初学一级 | 园豆:5
提问于:2014-07-09 11:58
< >
分享
最佳答案
0

Thread.Sleep(1); 这个地方 用socket.accept()用这个

收获园豆:15
wolfy | 老鸟四级 |园豆:2636 | 2014-07-09 13:20
其他回答(1)
0

建议去了解下TcpListener。

收获园豆:15
Firen | 园豆:5385 (大侠五级) | 2014-07-09 12:33
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册