ClientSocket的open跟connected的問題 |
答題得分者是:暗黑破壞神
|
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
查了一下bcb的help,發現一件事,open時並沒有完成整個連線的動作,下面是open的說明
For client sockets, Open locates and connects to a server. For server sockets, Open opens the socket connection in a listening mode, but does not complete the connection to a client socket. 而connected則是在整個連線動作完成時才會設為true,下面是說明
Read Connected before trying to use or change the socket connection. Connected indicates whether the socket connection has been established. When Connected is true, the socket is open and available for use. When Connected is false, the socket is closed and can be changed. 但若我要在某個button時建立連線並送出一筆資料時,就有問題了,
若connected不為true的話就無法傳送資料,用sleep或無窮迴圈等的話卻又都等不到,另建一個button手按或放在formcreat沒問題,
可是一放在一起就陣亡了,請問各位大大,這問題要怎麼解決呢?
|
Vicen
高階會員 發表:13 回覆:145 積分:151 註冊:2005-03-14 發送簡訊給我 |
做了个测试,这样可以正常送出。 放了个MEMO1用来显示信息。
SERVER和CLIENT为了省事都放在一个窗体了。下面是代码:
procedure TForm1.Button1Click(Sender: TObject); begin //启动SERVER 监听 ServerSocket1.Port := 100; ServerSocket1.Active := True; Memo1.Lines.Add('ServerSocket -> Active'); end; procedure TForm1.Button2Click(Sender: TObject); begin //连接服务器并发送信息,你可以在发送后就断开。 try ClientSocket1.Host := '127.0.0.1'; ClientSocket1.Port := 100; ClientSocket1.Open; While Not ClientSocket1.Socket.Connected do Application.ProcessMessages; ClientSocket1.Socket.SendText('Client >> Send Test'); except Memo1.Lines.Add('Open Error.'); end; end; procedure TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); begin //SERVER 获得信息 Memo1.Lines.Add('Server Get : ' Socket.ReceiveText); end; |
暗黑破壞神
版主 發表:9 回覆:2301 積分:1627 註冊:2004-10-04 發送簡訊給我 |
|
haman
中階會員 發表:46 回覆:137 積分:56 註冊:2005-03-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |