在各位师傅的帮助下我基本了解了idtcpserver和idtcpclient.
但是serversocket还是有点问题。
现在已经在往我这里发着数据,可是我接不到。ReceiveBuf的用法拜托给个例子好么。
可能问题很白。帮帮小弟。谢谢啦
procedure TForm1.Button1Click(Sender: TObject);
begin
      serversocket1.Open;
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
  Socket: TCustomWinSocket);
var
  i:integer;
  str:string;
begin
     i:=0
     serversocket1.Socket.Connections[i].ReceiveBuf(getdata,socket.ReceiveLength);
end;

解决方案 »

  1.   

    我的那个程序肯定是错误的。就是让各位师傅看看结构对不对。
    能给个列子最好。。谢谢啦。
    发过来的是数组。格式是begin
         clientsocket1.Address:=。。
         clientsocket1.Port:=。。
         clientsocket1.Open;
      end else begin
      for I := 0 to 30 do
         sendbuf[i]:=0.00;
      for I := 0 to 3 do
             buffer[i]:='#';
      strpcopy(pchar(@sendbuf[0]),buffer);
      for I := 0 to 4 do
        begin
            temparray[i*5+2]:=VarStruct^.fResult[gainStruct.iVarIndex[i][0]];
      

  2.   

    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
        buf : array[0..255] of byte ;
    begin
        Socket.ReceiveBuf(buf, 256);
    end;
      

  3.   

    procedure TfrmBindSN.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var _ReceiveStrData:string;
        _ipremoteaddr:string;
        buffer,public_str:string;
        i:integer;
        key:char;
        validip:boolean;
    begin
      _ipremoteaddr:=Socket.RemoteAddress;
      _ReceiveStrData:=Socket.ReceiveText;
      if  pos('@',_ReceiveStrData)>0 then
      begin
        socket.SendText('@');
        exit;
      end;
      validip:=false;
      for i:=low(Instock) to high(Instock) do
      begin
        if Instock[i].id=_ipremoteaddr then
        begin
          Instock[i].Socket:=Socket;
          validip:=true;
          break;
        end;
      end;
      if not validip then
      begin
         socket.SendText('Error Ip Address Connection');
         exit;
      end;
      if (length(_ReceiveStrData)>0) and (_ReceiveStrData[length(_ReceiveStrData)]='|') then _ReceiveStrData:=copy(_ReceiveStrData,1,length(_ReceiveStrData)-1);
      edtScan.Text:=_ipremoteaddr+':'+_ReceiveStrData;
      key:=#13;
      edtScanKeyPress(nil,key);
    end;
      

  4.   

    帮小弟看看,还是接不到。谢谢
    procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
      Socket: TCustomWinSocket);
    var
      i:string;
      temparray:array[0..30] of single;
      SendBuf:array [0..30] of single;
      len:integer;
    begin
        len:=socket.ReceiveLength;
       socket.ReceiveBuf(sendbuf,len);
       i:=Socket.ReceiveText;
       edit1.Text:=i;end;
      

  5.   

    len可能超过30个
    如果数据肯定是字符串,有直接按字符串接收的函数哦
      socket.ReceiveBuf(sendbuf,len); 
      i:=Socket.ReceiveText; 
    既然前一句已经接收了,后一句就是直接按字符串接收,当然收不到了
      

  6.   

    len:=socket.ReceiveLength; 
    socket.ReceiveBuf(sendbuf,len); 
    这2个函数已经把buffer的内容全部接收了,后面的ReceiveText不会再收到信息了,除非你的客户端还在继续发
      

  7.   

    ServerSocket.ThreadCacheSize 最大值 300,1000,2000??
      

  8.   

    ServerSocket.ThreadCacheSize 最大值能接收多少客户端?300,1000,2000??