Red de conocimiento informático - Espacio del host - Cuando uso CSocket::Send(character, length); para enviar datos, ¿cómo controlo la configuración de longitud? ¿Cómo puedo obtener la longitud máxima?

Cuando uso CSocket::Send(character, length); para enviar datos, ¿cómo controlo la configuración de longitud? ¿Cómo puedo obtener la longitud máxima?

Puedes utilizar la transmisión multiproceso y establecer el tamaño del búfer al mismo tiempo

3. Durante los procesos send() y recv(), a veces debido a las condiciones de la red y otras. Por motivos, el envío y la recepción no se pueden realizar como se esperaba, y Establezca el límite de tiempo de envío y recepción:

int nNetTimeout=1000;//1 segundo

//Límite de tiempo de envío

setsockopt(socket, SOL_S0CKET, SO_SNDTIMEO, (char *) &nNetTimeout,sizeof(int));

//Límite de tiempo de recepción

setsockopt(socket, SOL_S0CKET, SO_RCVTIMEO, (char *)&nNetTimeout,sizeof(int));

4. Durante send(), lo que se devuelve son los bytes realmente enviados (sincrónicos) o los bytes enviados al buffer del socket

(asíncrono); el estado predeterminado del sistema es enviar y Una recepción es de 8688 bytes (aproximadamente 8,5 K en el proceso real, la cantidad de datos enviados y recibidos es relativamente grande, por lo que el búfer del socket se puede configurar en); Evite send(), recv() Envío y recepción cíclicos continuos:

//Recibir buffer

int nRecvBuf=32*1024;//Establecer en 32K

setsockopt(s,SOL_SOCKET,SO_RCVBUF ,(const char*)&nRecvBuf,sizeof(int));

//Enviar buffer

int nSendBuf=32*1024;//Establecer a 32K

setsockopt(s,SOL_SOCKET,SO_SNDBUF,(const char*)&nSendBuf,sizeof(int));

5. buffer al buffer del socket La copia afectará el rendimiento del programa:

int nZero=0;

setsockopt(socket, SOL_S0CKET, SO_SNDBUF, (char *)&nZero, sizeof( nZero));

6. Complete la función anterior en recv() como se indica arriba (el valor predeterminado es copiar el contenido del búfer del socket al búfer del sistema):

int nZero =0;

setsockopt(socket, SOL_S0CKET,SO_RCVBUF, (char *)&nZero, sizeof(int));