serversocket缓冲区大小设置,现在是8K,我想设置成其它应如何设置?是用setsockopt函数吗,具体如何设?

解决方案 »

  1.   

    ServerSocket的ReceiveBuf函数需要指定接受数据的起始地址,你就把新申请的缓冲区地址指定就OK了1、申请缓冲区
      FBufSize := BufSize; //这里的BufSize为要指定的缓冲区大小
      GetMem(FReceiveBuf,FBufSize); //分配内存
      FCurReceiveBuf := FReceiveBuf; //当前接收数据的位置初始化为缓冲区首地址
      FPosition := 0; //当前位置初始化为02、接收数据:  try
        //接收数据到缓冲区
        while Socket.ReceiveLength > 0 do
        begin
          MaxReceive := FBufSize - FPosition; //MaxReceive为当前可接受数据的最大值
          //接收数据不得超过缓冲剩余大小
          if Socket.ReceiveLength > MaxReceive then 
            ReceiveLen := MaxReceive
          else
            ReceiveLen := Socket.ReceiveLength;
          FCurReceiveBuf := PByte(Integer(FReceiveBuf) + FPosition);  //接收地址移动
          //接收数据追加到缓冲区中
          Socket.ReceiveBuf(FCurReceiveBuf^,ReceiveLen);      //置当前指针位置
          FPosition := FPosition + ReceiveLen;
         //对缓冲区数据进行解析
          AnalyzeBuf;
        end;
      except
        ClearBuf;
      end;