請問有關ServerSocket端傳回client端的小問題 |
答題得分者是:dhchang
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
|
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
引言: 如果已經連上,而要等client 有其他的動作時,可在onListen 在event裏面,你不用自已判斷,只要把event 傳進來的 TCustomWinSocket *Socket 直接拿出來用 也就是只要寫 Socket->SendText("aa"); 他就會自動傳回給正在動作的client謝謝turboted前輩,因為這兩天放假, 所以沒有足夠的電腦可以試多client的環境~ 這麼久才給你回覆,真不好意思。 我有一個觀念上的問題不是很清楚,所以再請問一下^^ 在onListen的event裡...他會自動回傳給「正在動作」的client... 請問,server端若不馬上將訊息傳回client,要做一些處理之後才傳回, 而這時又有一client也傳一訊息給server,所以server同時有兩個訊息要處理, 這時兩個client都是「正在動作」嗎? 兩個client都在等待回應, 會不會我server在Socket->SendText("aa");時 收到訊息的是另一個client呢? 請教一下前輩們,謝謝 |
turboted
版主 發表:95 回覆:754 積分:452 註冊:2002-07-23 發送簡訊給我 |
Multithread..
簡單的說 .你在onListen的event
裏面,,要做一些處理之後才傳回...
也就是說
void __fastcall TForm1::ServerSocket1Listen(TObject *Sender,
TCustomWinSocket *Socket)
{
Socket->SendText("aa");
//......
//做了很多事
Socket->SendText("aa");
} 不管是上面的send 還是下面的send 都是一樣送給同一個
您說會不會送錯
不會的,因為bcb會自動處理這個*Socket的multithread問題
|
dhchang
一般會員 發表:7 回覆:9 積分:8 註冊:2003-05-15 發送簡訊給我 |
參考看看
//---------------------------------------------------------------------------
void __fastcall TForm1::ServerSocket1ClientConnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Num ;
} void __fastcall TForm1::ServerSocket1ClientDisconnect(TObject *Sender,
TCustomWinSocket *Socket)
{
Num--;
} void __fastcall TForm1::ServerSocket1Listen(TObject *Sender,
TCustomWinSocket *Socket)
{
//把收到的message 回覆給 client
AnsiString buf = Socket->ReceiveText();
for (int i = 0 ; i < Num ; i )
if (ServerSocket1->Socket->Connections[i]->RemoteAddress == Socket->RemoteAddress)
ServerSocket1->Socket->Connections[i]->SendText(buf);
}
|
gemi0305
版主 發表:81 回覆:564 積分:629 註冊:2003-05-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |