var i:integer; begin for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do begin if (ServerSocket1.Socket.Connections[i].RemotePort=1024) and (UpperCase(ServerSocket1.Socket.Connections[i].RemoteHost)='REMOTEPC1') then ServerSocket1.Socket.Connections[i].Close; end; end;
for i := 0 to Socket.ActiveConnections - 1 do if Socket.Connections[I].RemoteHost = '我想删的机子的HostName' then begin Socket.Connections[I].Close; break; end; 这样也可以!!!
type
Taa=record
flag:string;
str:string;
end;var
bb:Taa;
bb.flag:='1';
bb.str:='你好!';
然后使用socket.sendbuf(bb,sizeof(bb));接收同样用socket.receivebuf(bb,sizeof(bb));
根据flag就可以分开显示信息
2.在每个SendText后sleep(10)
1.具体如何使用呢?举个例好吗?
比如 host 为'remotepc1',port为1024,请问我如此关闭这个连接
2.ok now!谢谢!
socket.sendtext('你好');
sleep(10);
socket.sendtext('早上好');
当有多个clientsocket连接到serversocket时,可以将他们的ip地址和端口号(一般不变,由serversocket已经指定的)都记录下来,关键的问题是如何指定关闭某个特定的clientsocket的连接,使用serversocket.socket.connections[index].close是可以关闭某个连接,但是却不知道index的值对应的是哪个clientsocker。
2.
其实我本来就是用sleep这种方式的,但是总觉得不是很好,对于实时性要求比较高的系统总不能总是这样处理吧,所以寻找一种比较好的方法。各位多多讨论,分数不是问题!
var i:integer;
begin
for i:=0 to ServerSocket1.Socket.ActiveConnections-1 do
begin
if (ServerSocket1.Socket.Connections[i].RemotePort=1024) and (UpperCase(ServerSocket1.Socket.Connections[i].RemoteHost)='REMOTEPC1') then
ServerSocket1.Socket.Connections[i].Close;
end;
end;
一接收到该标志就close掉该socket!!!!! 还有疑问吗?????
if Socket.Connections[I].RemoteHost = '我想删的机子的HostName' then
begin
Socket.Connections[I].Close;
break;
end; 这样也可以!!!
问题基本解决,会把50分改为100分。
现在附带了另外一个小问题:
使用Socket.Connections[I].Close关闭某个clientsocket的连接后,
被删除连接的clientsocket可以通过再一次的
clientsocket1.active:=true等简单的方法就可以建立与serversocket连接。请问我如何防止某些被断开的clientsocket又和serversocket建立连接?
我希望能做到可以控制某些clientsocket可以连接到我的serversocket端,而有些不可以。
采用用户+密码的方式当然也可以,但是只是使用socket来控制的话是否也可以呢?