Socket通讯中Receive问题。。。
问题是这样的
1、对方首先发一段定长数据包,其中包括两个值a=20,,b=1或者0
2、b=1表示接下来对方还有有数据发来,b=0表示后面没数据了
3、a=20表示对方后面跟着20条记录,每条记录用回车符分割
4、每条记录长度不固定
前面那段定长的还好说,按长度接受就行了
关键是后面跟的a条记录,我应该怎样接受呢?
Socket刚接触,请解答详细点,谢谢
------解决方案--------------------using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
namespace SocketServer
{
/// <summary>
/// Class1 的摘要说明。
/// </summary>
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
//定义端口号
private const int porNum=81;
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
bool done=false;
TcpListener listener=new TcpListener(porNum);
listener.Start();
while(!done){
Console.Write("正在侦听81端口...");
TcpClient client=listener.AcceptTcpClient();
Console.WriteLine("\n处理连接请求...");
NetworkStream ns=client.GetStream();
//ns.Read(,0,);
byte[] bytes=new byte[1024];
int bytesRead=ns.Read(bytes,0,bytes.Length);
Console.WriteLine(Encoding.BigEndianUnicode.GetString(bytes,0,bytesRead));
byte[] byteTime=Encoding.ASCII.GetBytes(DateTime.Now.ToString());
try
{
ns.Write(byteTime,0,byteTime.Length);
ns.Close();
client.Close();
}
catch(Exception ex){
Console.WriteLine(ex.ToString());
}