C
cjsam
Unregistered / Unconfirmed
GUEST, unregistred user!
我定义一个TCP通讯的线程类,但是这个类的excute()中只有发起第一个请求连接通讯。
然后就等待服务端发数据后,触发消息收数据,然后就发送其他的连接。
程序的大体结构是这样的。
TtcpSocket== class(TThread)
private
。。。。。。。
public
Constructor create(**);
destructor Destroy; override;
procedure ReadData(var Message: TMessage);//消息拦截服务器端发送来的消息。
procedure Execute; override;
end;
implementation
Constructor create(**);
begin
..........
inherited create(false);
end;.
.............
//启动线程只是发起第一次的通讯连接,然后其他的通讯就在后面收到服务端数据 后再发起。
procedure Execute;
begin
senddata()//发送请求连接。发起的通讯第一帧
end;
procedure ReadData(var Message: TMessage)
begin
Recv(sock,RecvBuff,Length(RecvBuff),0);
recvs:=copy(recvBuff,0,Length(recvbuff));
......//处理收到的数据,并发送处理后其他的数据来和服务端通讯。
case * of
end
end;
end;
程序的打胎结构就是这样的,我的主程序创建它,我需要和服务端模拟多少次通讯,就创建多少个该线程。
比如:我需要创建100个和服务端通讯就是:
var
tsck:TtcpSocket;
for i:=0 to 99 do
begin
tsck:=TtcpSocket.create(..) ;
end;
因为我的线程的创建是inherited(false),因此,肯定是开始运行和服务端通讯。
我的问题是::
创建单个线程没有问题,但是多个的时候,有时候能行,有时候通讯到一半的时候就停止了,好象收不到服务端的数据,报某个地址出错。大家帮我看一下有可能是那出问题了。
我这个创建的多个线程的问题我觉得是个很简单的问题,不许要同步,他们之间也不需要通讯,就相当创建多少个通讯,就创建多少个线程类的对象,而且我那线程只是在创建之初发了一帧请求连接的命令(在execute()中),然后就不管了,由这个对象中收到的消息来控
制,这为什么几个对象各自和服务端连接的时候会出现异常,还报内存错,会是什么方面的原因呢?谢谢大家,帮我看一下吧。
然后就等待服务端发数据后,触发消息收数据,然后就发送其他的连接。
程序的大体结构是这样的。
TtcpSocket== class(TThread)
private
。。。。。。。
public
Constructor create(**);
destructor Destroy; override;
procedure ReadData(var Message: TMessage);//消息拦截服务器端发送来的消息。
procedure Execute; override;
end;
implementation
Constructor create(**);
begin
..........
inherited create(false);
end;.
.............
//启动线程只是发起第一次的通讯连接,然后其他的通讯就在后面收到服务端数据 后再发起。
procedure Execute;
begin
senddata()//发送请求连接。发起的通讯第一帧
end;
procedure ReadData(var Message: TMessage)
begin
Recv(sock,RecvBuff,Length(RecvBuff),0);
recvs:=copy(recvBuff,0,Length(recvbuff));
......//处理收到的数据,并发送处理后其他的数据来和服务端通讯。
case * of
end
end;
end;
程序的打胎结构就是这样的,我的主程序创建它,我需要和服务端模拟多少次通讯,就创建多少个该线程。
比如:我需要创建100个和服务端通讯就是:
var
tsck:TtcpSocket;
for i:=0 to 99 do
begin
tsck:=TtcpSocket.create(..) ;
end;
因为我的线程的创建是inherited(false),因此,肯定是开始运行和服务端通讯。
我的问题是::
创建单个线程没有问题,但是多个的时候,有时候能行,有时候通讯到一半的时候就停止了,好象收不到服务端的数据,报某个地址出错。大家帮我看一下有可能是那出问题了。
我这个创建的多个线程的问题我觉得是个很简单的问题,不许要同步,他们之间也不需要通讯,就相当创建多少个通讯,就创建多少个线程类的对象,而且我那线程只是在创建之初发了一帧请求连接的命令(在execute()中),然后就不管了,由这个对象中收到的消息来控
制,这为什么几个对象各自和服务端连接的时候会出现异常,还报内存错,会是什么方面的原因呢?谢谢大家,帮我看一下吧。