socket发送数据量过大导致发送失败 - kyohwang/games GitHub Wiki

问题

通过bytes发送图片数据的时候,发现只有在图片大小在15k左右时才能发送成功,再大一点就会发送失败

关于socket的发送缓冲区

socket发送数据时候先把数据发送到socket缓冲区中,之后接受函数再从缓冲区中取数据,如果发送端特别快的时候,缓冲区很快就被填满(socket默认的是1024×8=8192字节),这时候我们应该根据情况设置缓冲区的大小,可以通过setsockopt函数实现

int setsockopt(SOCKET s,int level,int optname,const char* optval,int optlen);

eg:

int optVal = 128x1024 ;

int optLen = sizeof(int);

setsockopt(socket, SOL_SOCKET,SO_RCVBUF,(char*)&optVal,optLen );

socket:传输数据的socket
SOL_SOCKET:基本套接口 
SO_RCVBUF:接受数据的缓冲区
optVal: 缓冲区大小
optLen :指向缓冲区大小变量的长度

目前我们引擎设置的大小是128x1024,在wsocket.c的socket_send添加相应的方法调用,建议不要超过128k这个量