有关stocket通讯,服务端如何持续接收客户端命令并返回数据给客户端问题
我现在做一个stocket程序,客户端和服务端连接成功后,客户端做数据增删查改,每次给服务端发送一条sql语句,服务端就接收到后进行数据库处理返回给客户端一个压缩后的Dataset,现在的问题是服务端现在这能接收到一次客户端命令,请各位给我点意见如何进行持续的接收,在不用到线程的情况下。现在我贴出服务端的代码:
int port = 50000;
             string host = "192.168.1.145";
             //创建终结点
             IPAddress ip = IPAddress.Parse(host);//
             IPEndPoint ipe = new IPEndPoint(ip,port);
             //创建监听socket
             Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
             s.Bind(ipe);
             s.Listen(0);
             MesServer.AppendText("等待客户端连接...\n");
             //s.Connect(ipe);              
             //为接受客户端连接,建立新的socket
             Socket client = s.Accept();
             MesServer.AppendText("已与客户端建立连接\n");
             //接受从客户端发送的消息
             string reClient = "";
             byte[] recvBytes = new byte[1024];
             int bytes;
             bytes = client.Receive(recvBytes, recvBytes.Length, 0);
             reClient += Encoding.ASCII.GetString(recvBytes, 0, bytes);              
                 MesServer.AppendText("get client message:" + reClient + "\n");
                 //根据发送过来的SQL语句返回数据流给客户端
                 DataSet ds = ToClientDS(reClient);
                 //压缩数据集,并发送到客户端
                 byte[] b = ObjectZip.CompressDataSet(ds);
                 client.Send(b, b.Length, 0);
                 //接收服务端返回的数据集
                 DataSet Clientds = new DataSet();
                 byte[] recvBytes = new byte[1024];
                 int bytes;
                 bytes = c.Receive(recvBytes, recvBytes.Length, 0);//接收服务端的数据流,并存入缓冲区
                 //Stream stream = new MemoryStream(recvBytes);
                 Clientds = ObjectZip.DecompressDataSet(recvBytes);
                 dataGridView1.DataSource = Clientds.Tables[0];
                 c.close();
                 }
             catch (Exception ex)
             {
                 MesClient.AppendText("Exception:" + ex.Message + "\n");
             }              
         }
------解决方案--------------------
持续的接收就是无限循环,或者用信号量
------解决方案--------------------WHILE(TRUE)
{
Socket client = s.Accept();
。。。。
}