TcpServer收不到数据包

chen_shu_jie 2011-07-15 03:28:00
我用TcpServer打开监听连接了别的机子后,就执行到这步了。
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
var
s:string;
begin
Memo1.Lines.Add('==开始接受数据:');
s:=ClientSocket.Receiveln;
while s <> '' do
begin
Memo1.Lines.Add(s);
s := ClientSocket.Receiveln;
end;

Memo1.Lines.Add('==接收完毕!');

end;

但是显示了“==开始接受数据:”这句话之后就再也显示什么,连最后一句'==接收完毕!'都没有。
我看到其他例题都是再开辟一个线程,专门用于接收数据的,但是我搞不懂,都执行到“==开始接受数据:”这步了,那么接收不到数据的原因是什么?求解答!很急!谢谢!
...全文
216 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chen_shu_jie 2011-07-16
  • 打赏
  • 举报
回复
后来我用 bmThreadBlocking 模式
出现这样的问题
{自己写定义一个线程用于获取接收信息}
TTST = class(TThread)
private
public
//定义一个字符串列表
ListBuffer :TStringList;
//定义一个字符串
TargetList :TStrings;
//定义一个用于实现把获取的信息放到列表中的过程
procedure AddToList;
//创建线程
constructor Create(CreateSuspended: Boolean);
//执行线程
procedure Excute;
//中断线程
procedure Terminate;
end;



不知道怎么回事呀
还有,这句话是什么意思啊
当一个重载的例程被声明为forward(向前声明)或接口声明时,其定义声明必需重申例程的参数列表。



chen_shu_jie 2011-07-16
  • 打赏
  • 举报
回复
线程解决了~用线程做做看~先谢过各位了
ADSLAN 2011-07-15
  • 打赏
  • 举报
回复
TcpServer的BlockMode的三个选择bmBlocking,bmNonBlocking,bmThreadBlocking有影响吗?
我选择最后一个 应该是线程阻塞模式
代码没错 我也这样用
只要客户端TCPCLIENT发送信息 应该能显示了
ADSLAN 2011-07-15
  • 打赏
  • 举报
回复
TcpServer的BlockMode的三个选择bmBlocking,bmNonBlocking,bmThreadBlocking有影响吗?
我选择最后一个 应该是线程阻塞模式
代码没错 我也这样和
只要客户端TCPCLIENT发送信息 应该能显示了
lzg827 2011-07-15
  • 打赏
  • 举报
回复
是不是被防火墙挡掉了?
进断点跟踪下,或者打日志。
如果一直没反映,关掉防火墙再试试。
如果是防火墙的原因,在防火墙中将这个程序设为信任。
chen_shu_jie 2011-07-15
  • 打赏
  • 举报
回复
TcpServer的BlockMode的三个选择bmBlocking,bmNonBlocking,bmThreadBlocking有影响吗?
bdmh 2011-07-15
  • 打赏
  • 举报
回复
下断点跟踪

1,593

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 网络通信/分布式开发
社区管理员
  • 网络通信/分布式开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧