本人的一个程序是从server端不断接收数据,可是发现接收来的数据不全,请问如何解决这个"丢包"的问题呢,
还有blocking 和nonBlocking 两种模式到底有何区别呢
还有blocking 和nonBlocking 两种模式到底有何区别呢
解决方案 »
- **我想把RxRichEdit里面图文混编的内容保存到数据库里面,用什么方法最好
- 求助 Delphi调用Oracle存储过程的问题 在线等
- 求一SQL语句,主从表查询的问题
- FasterReport中报表打印的问题!!急急。。请各位大侠帮忙!
- 如何用Delphi新建一个xls文件?
- QQ下拉式控件哪里找?
- 指针问题,多谢请教
- 一部双声卡的电脑,现在需要将其中一块“声卡A” 的输出音频数据,实时的直接输入“声卡B”的输入部分(也就是模拟麦克)
- 是走 是留...
- 用query查询,如何只显示刚刚才创建的那条记录,铁定给分
- 请问我用什么办法能限制别人使用我的程序的次数,在线等。
- 【Look for Project】武汉的朋友可以进来聊聊吗,散分100
或许说的不是太明白吧, 我再补充一点, 我用的procedure TMyThread.Execute;
begin
while (not terminated) do
Synchronize(invoke);
end;procedure TMyThread.invoke;
var
buf:array [0..511]of char;
begin
with form1 do begin
TcpClient1.ReceiveBuf(buf,500,0);
StringGrid1.Rows[Form1.StringGrid1.RowCount-1].Add(intToStr(i));
StringGrid1.Rows[Form1.StringGrid1.RowCount-1].Add(buf);
label6.Caption:='Now Receive '+intToStr(i)+ ' message';
StringGrid1.RowCount:=StringGrid1.RowCount+1;
inc(i);
end;
end;
end.
这里我没有设置使用哪种模式.
可尝试把以下句改进一下
改为内存操作,再映射到窗体界面上。
StringGrid1.Rows[Form1.StringGrid1.RowCount-1].Add(intToStr(i));
StringGrid1.Rows[Form1.StringGrid1.RowCount-1].Add(buf);
label6.Caption:='Now Receive '+intToStr(i)+ ' message';
StringGrid1.RowCount:=StringGrid1.RowCount+1;
可尝试把以下句改进一下
改为内存操作,再映射到窗体界面上。
你说"改为内存操作那如何改呢",望答.谢谢
Tcp协议超过2K时也不会丢的,除非程序写的有问题