serversocke向指定的client发送信息? |
答題得分者是:chris_shieh
|
xxxxzxx
一般會員 發表:21 回覆:49 積分:24 註冊:2004-11-15 發送簡訊給我 |
小弟用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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
我也覺得疑惑
若 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 發送簡訊給我 |
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(先前太大意).
<>您说的方法是对的.谢谢!>
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |