各位大虾好! 今天用Sockets做了一个网络监听程序 代码如下:
        //定义监听地址于监听端口
        TcpListener listener = new TcpListener(IPAddress.Parse("169.254.1.243"),42031);
        //定义接收客户端数据流
        NetworkStream clientStream; 
while (true)
                {
                    int readBytes = 0;
                    listener.Start();//开始监听端口,设置最大连接数为5个。
                    TcpClient client = listener.AcceptTcpClient();//开始等待客户端连接内容。
                    clientStream = client.GetStream();//获取客户端传送的字节流。        
                    byte[] buffe = new byte[1024];//定义接收字节流组数。
                    在这个现实长度为21 就说在这里数据就丢失了!                    readBytes = clientStream.Read(buffe, 0, 1024);//返回读取字节流中的字符长度
                    string netCents = Encoding.GetEncoding("ISO-8859-1").GetString(buffe);  //将字符数组转换为字符串。x
                    MessageBox.Show(netCents);
                    byte[] rtn=new byte[1024];
                    rtn = Encoding.GetEncoding("ISO-8859-1").GetBytes("接收成功".ToCharArray());
                    clientStream.Write(rtn, 0, rtn.Length);
                    clientStream.Close();
                    listener.Stop();
                }
在这个监听中获取vc++系统发送的数据被截取了  在vc系统中发送数据156|DF|62010000002|974A33E663ABC1AA1C7DF0CFB48B6DB8E7ADA6472CE84C913CA5B268DE752BB90C537C86B88876AC3546A119A71DF60BEA462CD0D4164A80A387E86E2B1AF0DB341C12388A4E172B|
是这样的但是接收是数据变成12|DF|62010000002|| 就是说 中间的数据没了 数据丢失了 这个为什么,请大家帮帮小弟。第一次和vc程序对接 没有经验,改了很多内容都不行,希望高手帮帮,先谢谢了!

解决方案 »

  1.   

    看你的代码,你并没有用到Socket,建议在接受客户端时,用Socket newClient = ServerListener.AcceptSocket();//创建新用户Socket 
    接收信息时用byte[] packetBuff = new byte[64];
    int len = newClient.Receive(packetBuff, packetBuff.Length, 0);
    string receiveStr=Encoding.Default.GetString(packetBuff,0,len).TrimEnd('\0');
    发送信息时用newClient.Send(Encoding.Default.GetBytes(sendMsg), Encoding.Default.GetBytes(sendMsg).Length, 0);
    试试看,希望对你有帮助。
      

  2.   

    还是不行, 我用这段代码接收C#程序的发送一点问题都没有 但是就接vc++的程序 有问题,数据丢包了! 不知道什么问题。很郁闷。