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这个量