解决方案 »
- 如何使messagebox.show对话框,在3秒之后自动消失 C#
- .netframework 是用什么语言写的
- 100分请教一个奇怪的问题
- 按下combobox下拉的小箭头事件?
- mysql全角半角模糊查询
- 通过访问一个硬盘来确定一个硬盘的物理序列号?
- 想挑战自己的,请进!!!!!!!!!!!!!!!!!
- 高分辨率屏幕录像在低分辨屏幕下不清晰的问题如何解决?
- 彻底解决 CrystalReports 登录失败问题(海波.NET)
- DataSet???
- 求助:假设服务器和客户端之间的消息有三种字节编码方式,给定一个字节编码的数据info,如何将info解码成原来的数据类型?
- c# 怎么实现BHO
你收到的包头长度变了吧。你看看result的长度是多少 包头的长度超出了result的长度了。
if (bytes > 0)
{
byte[] temp = new byte[bytes]; 你光new这里? 没有把实际的上面 reciveBytes传进去呀 这样里面全是空的
queue.Enqueue(temp);
要改成 byte[] temp = new byte[bytes];
Buffer.BlockCopy(recvBytes,0,temp,0,bytes);
queue.Enqueue(temp);
首先抛开你的代码不说 以下是我修改以后 接收的数据 奇怪现在好像可以正常完整接收?因为我拿到完整的一个数据包还要做解析处理的 int port = 4001;
string host = "192.168.0.80";
IPAddress ip = IPAddress.Parse(host);
IPEndPoint ipe = new IPEndPoint(ip, port);//把ip和端口转化为IPEndPoint实例
Socket c = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//创建一个Socket
Console.WriteLine("Conneting...");
c.Connect(ipe);//连接到服务器 while (true)
{
//建立缓冲区
byte[] recByte = new byte[4096];
int bytes = c.Receive(recByte, recByte.Length, 0);//从服务器端接受返回信息 //分多次接收
byte[] reallData = new byte[bytes];
Array.Copy(recByte, reallData, reallData.Length); //解析雷达数据 包含平均速度/占有率/车流量
string data = BitConverter.ToString(reallData);
Console.WriteLine(data);
}
你那样子当然可以正常接收。你就是少了 //分多次接收
byte[] reallData = new byte[bytes];
Array.Copy(recByte, reallData, reallData.Length); 这个呀
你要把这货也在放进去呀,Copy之后再Enqueue
{
string baseStr = BitConverter.ToString(source.ToArray());
string searchStr = BitConverter.ToString(seach);
int x=baseStr.IndexOf(searchStr, startIndex) ;
return x==-1?-1: x / 3;
}