请问XE中 TCPServer 控件多线程接受数据的问题?折腾2天了。。。。 |
答題得分者是:aftcast
|
allen-86
一般會員 ![]() ![]() 發表:28 回覆:44 積分:19 註冊:2008-02-01 發送簡訊給我 |
1.想学习一下TcpServer 和TcpClient 控件。但是现在碰到一个问题,就是TcpServer多线程的问题。
到网络查到的资料大部分是D7版本的。 2.现在我把线程放到2个事件中进程测试,都不能很好的获取数据。 1.放到Accept事件中, //自定义接受线程======================================== TMyThread = class(TThread) private sRecv: string; public cs: TCustomIpClient; procedure gogo; protected procedure Execute;override; public constructor Create(cs1: TCustomIpClient); end; procedure TForm1.CPSV1Accept(Sender: TObject; ClientSocket: TCustomIpClient);///// 接受事件============================================================= var TMyThread.Create(ClientSocket); end; 这样以来只能在TMyThread Creat 过程中recv数据 (但是一直循环接收 发送数据 还没测试不晓得正常不) 如果放在TMyThread Execute 中,cs已经错误了。。不能接受数据。 2.放到GetThread 中 procedure TForm1.CPSV1GetThread(Sender: TObject; var ClientSocketThread: TClientSocketThread); begin ClientSocketThread := TTTTT.Create(cpsv1.ServerSocketThread); end;
不知道怎么写? 请问各位大大 如何多线程使用? 多谢各位了!!~
------
The empty vessels make the greatest sound. |
aftcast
站務副站長 ![]() ![]() ![]() ![]() ![]() 發表:81 回覆:1485 積分:1763 註冊:2002-11-21 發送簡訊給我 |
建議別使用TCPServer控件了。這個是非常難用的。請改用tserversocket,或indy裡的元件。但若使用tserversocket,則要自己安裝這個元件。在安裝目錄下的bin下有個叫dclsockets150這個bpl,可自行安裝。
若你一定要使用TCPServer,我只能和你說,你需要去處理一個叫select的方法。使用它來處理讀與寫。
------
蕭沖 --All ideas are worthless unless implemented-- C++ Builder Delphi Taiwan G+ 社群 http://bit.ly/cbtaiwan |
allen-86
一般會員 ![]() ![]() 發表:28 回覆:44 積分:19 註冊:2008-02-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |