線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1397
推到 Plurk!
推到 Facebook!

serversocke向指定的client发送信息?

答題得分者是:chris_shieh
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-16 00:58:14 IP:220.165.xxx.xxx 未訂閱
小弟用D7/internet/ServerSocket&ClientSocket开发一个网络程式.问题: 怎么让ServerSocket向指定的ClientSocket(多个ClientSocket已经连上serversocket)发送信息?小弟的tset如下: procedure TForm1.ServerSocket1ClientConnect(Sender: TObject; Socket: TCustomWinSocket); var i:integer; begin for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do if sverSocket1.Socket.Connections[i].SocketHandle=Socket.SocketHandle then {这里取得某个client的Socket.SocketHandle,方法是showmessage(inttostr(ServerSocket1.Socket.Connections[i].SocketHandle))} ServerSocket1.Socket.Connections[i].SendText('test'); end;//这样是没有问题的.但下面的就不行了. procedure TForm1.Button1Click(Sender: TObject); begin ServerSocket1.Socket.Connections[已知的integer数(某个clientd的Socket.SocketHandle )].SendText('test'); end; 请各位大大指点.谢谢.
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-16 07:46:48 IP:218.167.xxx.xxx 未訂閱
procedure TForm1.ServerSocket1ClientConnect(Sender: TObject;
Socket: TCustomWinSocket);
var i:integer;
begin
  for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
  if sverSocket1.Socket.Connections[i].SocketHandle=Socket.SocketHandle then
  {这里取得某个client的Socket.SocketHandle,方法是showmessage(inttostr(ServerSocket1.Socket.Connections[i].SocketHandle))}
  ServerSocket1.Socket.Connections[i].SendText('test');
end;//这样是没有问题的.但下面的就不行了.    procedure TForm1.Button1Click(Sender: TObject);
var
  hHandle; //要向那一個socketclient送出訊息要先決定
begin
  hHandle:=.......//來自上面某一client的Socket.SocketHandle,
  for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
  if sverSocket1.Socket.Connections[i].SocketHandle=hHandle then
  begin
    ServerSocket1.Socket.Connections[i].SendText('test');
    break;
  end;  
end;    
@瞭解越多.懂得越少@
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-16 11:14:34 IP:220.163.xxx.xxx 未訂閱
clientSHandle:=sverSocket1.Socket.Connections[i].SocketHandle//已经取得 procedure TForm1.Button1Click(Sender: TObject); var hHandle; begin hHandle:=clientSHandle; {for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do if sverSocket1.Socket.Connections[i].SocketHandle=hHandle then begin} ServerSocket1.Socket.Connections[hHandle].SendText('test');//这样不知行吗? //break; //end; end;
chris_shieh
高階會員


發表:46
回覆:308
積分:240
註冊:2004-04-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-16 23:19:29 IP:218.167.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
var
  hHandle; //要向那一個socketclient送出訊息要先決定
begin
  hHandle:=clientSHandle;
  for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
  if sverSocket1.Socket.Connections[i].SocketHandle=hHandle then //這是為了確認所要送出訊息的對象
  begin
    ServerSocket1.Socket.Connections[i].SendText('test'); //Connections代表所有連線的對象, 必須用上面SocketHandle來辨認
    break;
  end;  
end;
@瞭解越多.懂得越少@
whyzn
中階會員


發表:46
回覆:149
積分:54
註冊:2002-06-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-18 18:59:15 IP:220.141.xxx.xxx 未訂閱
我也覺得疑惑 若 ServerSocket1.Socket.ActiveConnections = 2 哪麼 ServerSocket1.Socket.Connections[0].SendText('test'); 或 ServerSocket1.Socket.Connections[1].SendText('test'); 應該都可成功發送啊 (假設先不分對象) 不知 xxxxzxx 兄說的不行是指 ?? ●○○○○○●○○○○○● 竹密不妨水過,山高無礙雲飛 發表人 - whyzn 於 2005/04/18 19:03:29
------
●○○○○○●○○○○○●
竹密不妨水過,山高無礙雲飛
xxxxzxx
一般會員


發表:21
回覆:49
積分:24
註冊:2004-11-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-18 23:36:46 IP:220.163.xxx.xxx 未訂閱
whyzn您好    先前我对这样的方法 for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do if sverSocket1.Socket.Connections[i].SocketHandle=Socket.SocketHandle then ServerSocket1.Socket.Connections[i].SendText('test') 认识的不对,经过测试及chris_shieh大大的指点才明白 ServerSocket1.Socket.Connections[i]<>sverSocket1.Socket.Connections[i].SocketHandle(先前太大意). <>您说的方法是对的.谢谢!
系統時間:2024-05-12 6:01:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!