I am writing a RTSP server and had everything working using UDP (udp_new,
udp_send and udp_close) but found i needed to add in TCP as well so changed my
loop code but nothing works.
What i need to do at the moment is connect from the server (192.168.1.5 port
newPlayState->rtspState.setupServer1) to (192.168.1.3 port
newPlayState->rtspState.setupClient1) either in UDP or TCP
snippet of the main transfer loop
int out_socket;
int socket_err;
struct sockaddr_in sockAddr;
struct ip_addr outAddr;
U32 address = 0xc0a80103; // fixed address of client 192.168.1.3
BOOL isTcp = newPlayState->rtspState.setupTransportMode&8;
if( isTcp)
{
out_socket = socket( AF_INET, SOCK_STREAM, IPPROTO_TCP);
}
else
{
out_socket = socket( AF_INET, SOCK_DGRAM, IPPROTO_UDP);
}
memset( &sockAddr, 0, sizeof( sockAddr));
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(
newPlayState->rtspState.setupServer1);
sockAddr.sin_addr.s_addr = htonl( 0xc0a80105); // fixed address of the
server 192.168.1.5
socket_err = bind( out_socket, (struct sockaddr *)&sockAddr, sizeof(
sockAddr));
RS232_Verbose( "BIND %d\r\n", socket_err);
memset( &sockAddr, 0, sizeof( sockAddr));
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons(
newPlayState->rtspState.setupClient1);
sockAddr.sin_addr.s_addr = htonl( address);
if( isTcp)
{
socket_err = connect( out_socket, (struct sockaddr *)&sockAddr,
sizeof( sockAddr));
RS232_Verbose( "CONNECT %d\r\n", socket_err);
}
while( !newPlayState->rtspState.doQuit)
{
S32 bytesRead;
bytesRead = ReadBuffer( fd, sectorBuffer+12,
SECTOR_BUFFER_SIZE);
if( bytesRead<0)
{
newPlayState->rtspState.doQuit = TRUE;
break;
}
else if( bytesRead && !newPlayState->rtspState.doPause)
{
U32 t = timerInterrupts;
sectorBuffer[ 0] = 0x80;
sectorBuffer[ 1] = 33;
sectorBuffer[ 2] =
newPlayState->rtspState.setupSequence>>8;
sectorBuffer[ 3] =
newPlayState->rtspState.setupSequence;
sectorBuffer[ 4] = t>>24;
sectorBuffer[ 5] = t>>16;
sectorBuffer[ 6] = t>>8;
sectorBuffer[ 7] = t;
sectorBuffer[ 8] = ((U32)fd)>>24;
sectorBuffer[ 9] = ((U32)fd)>>16;
sectorBuffer[10] = ((U32)fd)>>8;
sectorBuffer[11] = ((U32)fd);
if( isTcp)
{
send( out_socket, sectorBuffer, bytesRead+12,
0);
}
else
{
sendto( out_socket, sectorBuffer, bytesRead+12,
0, (struct sockaddr *)&sockAddr, sizeof( sockAddr));
}
newPlayState->rtspState.setupSequence++;
}
}
closesocket( out_socket);
What am i doing wrong!!!
_______________________________________________
lwip-users mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/lwip-users