Sí me he explicado un poco mal,
tengo un software de desarrollo donde hacer las pruebas: un Servidor y un Cliente. Protocolo utilizado: SIP
- Si desarrollo un cliente, verifico que se comporta igual que el Cliente original al comunicarse con el Servidor.
- Y si desarrollo un servidor ver que se comporta igual que el Servidor original con los clientes.
Mi caso es el primero: hacer un cliente.
El Servidor, como el Cliente, tienen un archivo de configuración en el que se puede activar la opción de control de errores(checksum y todo eso).
- Si pongo control de errores desactivado, al hacer el primer send, llega lo que mande (sea un comando SIP válido o no)
1. Received raw, non-SIP text: en el caso de enviar una cadena que no reconoce
o
2. Una ventana indicando el nombre del comando enviado: en el caso de enviar una cadena que sí reconoce
La segunda y siguientes veces que envío, sale la primera ventana pero vacía (mande un comando SIP válido o texto cualquiera)
- Si pongo control de errores activado es lo mismo, sólo que si mando cadenas que no reconoce como comandos SIP, las ignora sin decir nada. Pero igual que antes sólo me muestra la primera, las demás no.
El servidor no cierra el socket, y los valores de send van bien (el nº de bytes quue envía).
Espero que ahora se entienda mejor. Si se os ocurre algo....
EI: juntando mensajes.
He hecho pruebas con un programita TCP IP Test Server: todo lo que mi cliente envía lo recibe...
El problema está en el Servidor que me han pasado para probar.
Por lo menos ya sé que el cliente envía como dios manda. Vamos a seguir probando cosas.
EI: juntando mensajes.
el fallo está en el +1 de:
send(cliente_m, sip, strlen(sip)+1, 0);
Para que el server que uso se entere debería ser:
send(cliente_m, sip, strlen(sip), 0);
saludos