客户端会向服务器端发100条数据,每条定长
要求服务器端一条一条的接收,接受完一条后返回给客户端一条报文
服务器端怎样实时接收
这里不会写
接收一条的实现了
是这样            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse("9001"));
            Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            server.Bind(ipep);
            server.Listen(0);
            Socket client = server.Accept();
            IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;            byte[] datastr = SocketHelper.ReceiveData(client, 200);
            string len = Encoding.Default.GetString(datastr);
            if (len != String.Empty)
{
/////////////////////////
}
                byte[] rebdata = Encoding.Default.GetBytes(str);
                int redata = SocketHelper.SendVarData(client, rebdata);
client.Close();
实时接收咋做 新手  赐参考源码  谢谢 

解决方案 »

  1.   

    加一个循环就可以了,不过缺乏退出机制,如果你知道是100条,可以用计数器数到100就退出循环,也可以,可以约定客户端发送一个结束的数据过来,服务器判断接受数据等于结束数据,就退出循环,或者在一个线程中执行这个循环,结束程序时杀死这个线程,            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse("9001"));
                Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                server.Bind(ipep);
                server.Listen(0);
    while(true)
    {
                Socket client = server.Accept();
                IPEndPoint clientep = (IPEndPoint)client.RemoteEndPoint;            byte[] datastr = SocketHelper.ReceiveData(client, 200);
                string len = Encoding.Default.GetString(datastr);
                if (len != String.Empty)
    {
    /////////////////////////
    }
                    byte[] rebdata = Encoding.Default.GetBytes(str);
                    int redata = SocketHelper.SendVarData(client, rebdata);
    client.Close();
    }