请教一个socket问题(60分)

  • 主题发起人 主题发起人 ranyang
  • 开始时间 开始时间
R

ranyang

Unregistered / Unconfirmed
GUEST, unregistred user!
用clientsocket在一线程里接收数据!但是每次运行时间大约一个小时后街不能接收数据了!为什么呢?!
还有一个问题:我想更改线程的socket连接ip和端口时,先停止socket,总是就死在这里了!不能继续运行!
 
检查线程是否出错了
 
没有报错呀!
 
是不是有持续会话时间长度设置?过了该时间段就关闭连接了呢?(没用过clientsocket)
 
我做的是server,
希望和你一起讨论~!
qq:53368749
 
你线程里有没有出现Exit,还有你的线程处理是用线程同步方法处理的嘛?
应该就是上述两种情况
 
我是这样处理的:
在主线程建立的socketclient
然后在线程里:

procedure TSocketThread.Execute;
begin
while not Terminated do
begin
if not Form1.ClientSocket1.Active then
Terminate
else
try
Form1.Read;//读数据函数
except
end;
end;
end;

read里是处理socketread的函数:
read
begin
str:=Clientsocket1.Socket.ReceiveText;
。。。
end;
 
对你第2个问题:试试~~
你可以先把其他程序和底层机器(如果有)关了,改完ip和port再启动,应该就可以了。
 
其它程序?!我不太明白!
 
to;ranyang,
你的线程工作方式有问题.
至少你要加一个同步
Synchronize()
 
用线程工作需要临界,不然会出现I/0错误,这样你的线程就不执行了,我也是刚遇到这种问题。
 
楼上的!怎么解决呢?
 
Form1.Read;//这句要同步。
改成:Synchronize(xxxxx)

procedure xxxx();
begin
Form1.Read;//
end;
 
没有人说到点子上!不过,现在我找到了一点问题!
就是由于网络不好!连接自己断了!前台没有办法知道连接已经丢失!故一直在那里等待!!!
 
楼主 是做什么用socket啊 有兴趣交流一下 qq 24826316
 
多人接受答案了。
 
后退
顶部