socket客户端,如何多线程编程,给个例子(300分)(300分)

  • 主题发起人 主题发起人 天外客
  • 开始时间 开始时间

天外客

Unregistered / Unconfirmed
GUEST, unregistred user!
一个程序想用ClientSocket,而且一个线程里有socket和服务器连接,如何编程呀,急!
 
Procedure TMyServerThread.clientExecute;
var stream:TWinSocketStream;
Buffer:arrar[0..9]of char;
Begin
{一直循环,到线程终止或连接断开}
While (not Terminated) and ClientSocket.Connected do
Begin
Try Stream:=TwinSocketStream.Create(ClientSOcket,60000);
try
{填充Buffer数组}
FillChar(Buffer,10,0);
{给客户60秒的时间}
If Stream.WaitForData(60000) then
Begin
{在这里取数和给客户返回信息}
......
End
Else ClientSocket.Close;
Finally
Stream.Free;
End;
Except
HandleException;
End;
End;
End;

delphi 里有个例子
 
如果你是用indy的话,继承indy的TIdThread写一个对象。然后在它的run事件里这么写:
procedure TSocketThread.Run;
var
bytes: longint;
utf: string;
buff: WideString;
begin
utf := _Socket.CurrentReadBuffer;(_socket是这个对象用到的TidTCPClient)
buff := UTF8Decode(utf);
if ((Self.Stopped) or (Self.Suspended) or (Self.Terminated)) then
exit;
bytes := length(buff);
if bytes > 0 then
做你想做的事情
end;
end;
 
delphi 里有个例子 是哪个例子呀?不是那个chat程序吧?
 
客户端用多线程用出应该不大,多线程只要是是server端用,因为client一般不用同时处理
多个连接请求,所以onconnect和onreceive事件中处理就足够了。

如果是server端,采用多线程还是很有必要的。但如果是要处理很大量的事务,建议还是
用api编写,都很简单的。

我有用serversocket编写的简单多线程demo,要的话留个mail,发给你看看。
 
cnbobo@vip.sina.com我要
 
give me copy one.thanking of you
my e_mail: peter.ma@fookwah.com
 
zhangceyong@163.com 我也要.
 
zhongqiang999@hotmail.com我要,thinks you
 
我要,thinks you

xijuanhui@163.com
 
ChenZX,你把那个Demo发给我吧,分数就是你的了
 
分数就那么重要的吗,我多的是,来这里主要还是和大家交流,共同进步。

你没留mail,怎么发给你啊!

其他人不知道都收到没有???!
 
刚才忘记写地址
linls@km169.net
谢谢了
 
谢:ZOUJINHE@CHANGHONG.COM
 
cbychen@sina.com
谢谢
 
say-forevers@163.com我也需要啊,谢谢
 
多人接受答案了。
 
chenxz, 能否也发一个给我,谢谢。 arcter@163.net
 
I need it, thank you.
gkrong@163.com
 
后退
顶部