lwip-users
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[lwip-users] Help on socket problem


From: Julian Gardner [RSD]
Subject: [lwip-users] Help on socket problem
Date: Sat, 24 Nov 2007 07:44:40 -0000


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!!!


reply via email to

[Prev in Thread] Current Thread [Next in Thread]