我想发送接收大约10k的数据,可是socket接收发送缓冲区只有1024字节,我该怎么办呢?
是不是可以用setsockopt改变缓冲区的大小呢?怎么用呀?
这样有什么不好吗?

解决方案 »

  1.   

    socket的接收缓冲区为8k,可以用setsockopt/CSocket::Ioctl设置SO_RCVBUF设置。int nRecvBuf=32768;
    setsockopt(s,SOL_SOCKET,SO_RCVBUF,(const char*)&nRecvBuf,sizeof(int));
      

  2.   

    你能告诉我SOL_SOCKET是什么意思吗,谢谢
      

  3.   

    SOL_SOCKET这是一个socket选项,像广播,就是在这里设置
      

  4.   

    为什么不可以多次发送呢?毕竟设置Buffer的方法治标不治本,如果某次数据的大小超过了缓冲区的容量,是不是又要设置一次呢?我的做法就是在一个while循环里面,分多次发送
      

  5.   

    如果用的是MFC中的CAsyncSocket或CSocket类,可以使用其成员函数SetSockOpt。
    如果用的是Windows Socket Functions,可以直接使用API函数setsockopt。