首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

win98在indy 的udp 中没法接受数据

2012-10-25 
win98在indy 的udp 中无法接受数据如题俺在做一个视频传送的程序用win 98 作为 接受视频的一段传送视频的

win98在indy 的udp 中无法接受数据
如题
俺在做一个视频传送的程序
用win 98 作为 接受视频的一段 
传送视频的一段时 其他操作系统的机子 
但是现在的问题是我用win98 就是接收不到 数据
而用其他的 操作系统就能接受 
一下贴出 两边的代码 求解答

发送视频数据端
  Bitmap := TBitmap.Create;
  Bitmap.Width := BMPINFO.bmiHeader.biWidth;
  Bitmap.Height := BMPINFO.bmiHeader.biHeight;

  // New size of Bitmap
  hd := DrawDibOpen;
  DrawDibDraw(hd, Bitmap.Canvas.Handle, 0, 0, BMPINFO.BmiHeader.biwidth,
  BMPINFO.bmiheader.biheight, @BMPINFO.bmiHeader, lpVHdr^.lpData, 0, 0,
  BMPINFO.bmiHeader.biWidth, BMPINFO.bmiHeader.biheight, 0);
  DrawDibClose(hd);
  memStream := TMemoryStream.Create;

  jpg := TJpegImage.Create;

  jpg.Assign(Bitmap);
  jpg.CompressionQuality := 15;
  jpg.JPEGNeeded;
  jpg.Compress;
  jpg.SaveToStream(memStream);

  jpg.Free;

  //因为UDP数据包有大小限制,这里如果超出部分,就没有传输,完全可以发几次发出去

  Form1.IdUDPClient1.BroadcastEnabled := true; //用广播功能
  if memStream.Size > Form1.IdUDPClient1.BufferSize then
  begin

  Form1.IdUDPClient1.SendBuffer('192.168.1.255', 9001, memStream.memory^, Form1.IdUDPClient1.BufferSize); //向192.168.0.X网段广播,端口 9001
  end
  else
  begin
  form1.IdUDPClient1.Send('1');
  Form1.IdUDPClient1.SendBuffer('192.168.1.255', 9001, memStream.Memory^, memStream.Size);
  end;



接受数据端
procedure TForm1.idpsrvr1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var jpg: TJpegImage;
  j: Integer;
  png: TPNGObject;
  bmp: TBitmap;
  ReceiveData: array[1..10000] of Byte;
begin

  begin
  try
  j := AData.Size;
  jpg := TJpegImage.Create;
  jpg.LoadFromStream(Adata);
  png := TPNGObject.Create;
  bmp := TBitmap.Create;
  bmp.Assign(jpg);
  png.Assign(bmp);
  img1.Picture.Assign(png);
  jpg.Free;
  bmp.Free;
  png.Free
  except
  end;

  end;
end;


哪位大神能帮忙解答下

[解决办法]

探讨

关键是 点对点 是 ok的 广播就没用,我在 接收端单步 ,他就不触发 TForm1.idpsrvr1UDPRead 这个事件 也就是说 他就没数据传过来

[解决办法]
UDP广播的IP应该设定为255.255.255.255。

你下载Indy的Demo源代码,然后运行UDPChargenAndEcho这个例子看看。学着改改吧。
[解决办法]
不同网段,到Wind98之间的路由不相通的吧,有没有装防火墙之类的
[解决办法]
试过Indy Demo中的例子没有?

热点排行