kingshine,hezchuan168:可否具体一点说呢,我刚接触,不是很懂的

解决方案 »

  1.   

    第一个问题:你在每一个请求连接的时候会得到一个连接ID,这时你可以建立一个数据表,里面包含连接ID和机器名,如果需要断开某个机器,仅仅在这个数据表里面查找相应的ID,然后就可以断开指定的机器了。。第二个问题:你可以先定义一个结构:
    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.   

    ladxuan(璇娃子) :如何指定断开与某个机器的连接?使用的函数是哪些?谢谢,等你回复,准备给分!
      

  3.   

    1.TServerSocket.Socket.Connections中找到该机器的地址和端口,然后Close它。
    2.在每个SendText后sleep(10)
      

  4.   

    bobfang(匆匆过客) :
    1.具体如何使用呢?举个例好吗?
      比如 host 为'remotepc1',port为1024,请问我如此关闭这个连接
    2.ok now!谢谢!
      

  5.   

    serversocket1.Socket.ActiveConnections;
    socket.sendtext('你好');
    sleep(10);
    socket.sendtext('早上好');
      

  6.   

    1.
    当有多个clientsocket连接到serversocket时,可以将他们的ip地址和端口号(一般不变,由serversocket已经指定的)都记录下来,关键的问题是如何指定关闭某个特定的clientsocket的连接,使用serversocket.socket.connections[index].close是可以关闭某个连接,但是却不知道index的值对应的是哪个clientsocker。
    2.
    其实我本来就是用sleep这种方式的,但是总觉得不是很好,对于实时性要求比较高的系统总不能总是这样处理吧,所以寻找一种比较好的方法。各位多多讨论,分数不是问题!
      

  7.   


    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;
      

  8.   

    你的目的是要端开某个client????这很简单,你现在可以找到要端开client的ip,只需发送一个标志过去,该client
    一接收到该标志就close掉该socket!!!!!     还有疑问吗?????
      

  9.   

    for i := 0 to Socket.ActiveConnections - 1 do
        if Socket.Connections[I].RemoteHost = '我想删的机子的HostName' then
      begin
        Socket.Connections[I].Close;
        break;
      end;   这样也可以!!!
      

  10.   

    谢谢bobfang(匆匆过客)和ladxuan(璇娃子) !
    问题基本解决,会把50分改为100分。
    现在附带了另外一个小问题:
    使用Socket.Connections[I].Close关闭某个clientsocket的连接后,
    被删除连接的clientsocket可以通过再一次的
    clientsocket1.active:=true等简单的方法就可以建立与serversocket连接。请问我如何防止某些被断开的clientsocket又和serversocket建立连接?
      

  11.   

    不能使用serversocket1.active:=false 或者serversocket1.close这样的方法,否则会断开了与所有的clientsocket的连接的。
    我希望能做到可以控制某些clientsocket可以连接到我的serversocket端,而有些不可以。
    采用用户+密码的方式当然也可以,但是只是使用socket来控制的话是否也可以呢?