Hi,
    I didn't come across this problem, but I know how to resolve it, maybe I 
could give you some advice.
Please check the file /etc/hosts, and edit it like this:
127.0.0.1 localhost.localdomain localhost
    
good luck!

jiazhen

////////////////////////////////////////////////////////////////////////////////////////////////////
Hi to All,

I am creating 3 socket. At the second time socket creation ,SO_REUSEADDR gives 
illegal seek (29) error. 
same error is coming while running this code in Linux PC also. i don't know why 
this happening.

?Can anyone help me to resolve this problem?

My Source Code is:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>
#include <errno.h>
#include <netdb.h>

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

/////////////////////////////////////////////////////
//��?#define
/////////////////////////////////////////////////////

#define MULTICAST_MTX_IP "239.192.14.120"

#define MULTICAST_MTX_PORT 16500

#define MULTICAST_UTX_IP "192.168.2.81"

#define MULTICAST_UTX_PORT 16502

#define MULTICAST_RX_IP "239.192.14.110"

#define MULTICAST_RX_PORT 50002

#define MAXDATALENGTH 1600

typedef enum TX_TYPE
{
��?UNICAST = 0,
��?MULTICAST
}TX_TYPE;

typedef enum SOCK_TYPE
{
��?TRANSMIT = 0,
��?RECEIVE
}SOCK_TYPE;

/////////////////////////////////////////////////////
//��?structures
/////////////////////////////////////////////////////

typedef struct mdr_sock_information
{
��?int mdr_mcasttx_sock_fd;
��?int mdr_ucasttx_sock_fd;
��?int mdr_rxudp_sock_fd;
��?int mdr_rxhttp_sock_fd;
}mdr_sock_information;

/////////////////////////////////////////////////////
//��?static variable
/////////////////////////////////////////////////////

static char recvedbuffer[MAXDATALENGTH];
static char databuffer[1280*720];

/////////////////////////////////////////////////////
//��?global variable
/////////////////////////////////////////////////////

mdr_sock_information mdr_sock_info;

/////////////////////////////////////////////////////
//��?function prototype
/////////////////////////////////////////////////////

void retransmit_mdr_stream();
void mdr_stream_threadfxn();
int?create_txrx_udp_socket(char *, int, int, int, unsigned char);
void recvdata_udp_sock();
int?mdr_data_send();

/////////////////////////////////////////////////////
//��?functions
/////////////////////////////////////////////////////

void retransmit_mdr_stream()
{
��?mdr_stream_threadfxn();
}

void mdr_stream_threadfxn()
{
��?mdr_sock_info.mdr_mcasttx_sock_fd = create_txrx_udp_socket(MULTICAST_MTX_IP, 
MULTICAST_MTX_PORT, TRANSMIT, MULTICAST, 64);
��?if(mdr_sock_info.mdr_mcasttx_sock_fd == -1)
��?��?printf("failed in create_transmit_multicast_udp_socket\n\n");
��?else
��?��?printf("success in create_transmit_multicast_udp_socket\n\n");

��?mdr_sock_info.mdr_ucasttx_sock_fd = create_txrx_udp_socket(MULTICAST_UTX_IP, 
MULTICAST_UTX_PORT, TRANSMIT, UNICAST, 64);
��?if(mdr_sock_info.mdr_ucasttx_sock_fd == -1)
��?��?printf("failed in create_transmit_unicast_udp_socket\n\n");
��?else
��?��?printf("success in create_transmit_unicast_udp_socket\n\n");

��?mdr_sock_info.mdr_rxudp_sock_fd = create_txrx_udp_socket(MULTICAST_RX_IP, 
MULTICAST_RX_PORT, RECEIVE, MULTICAST, 64);
��?if(mdr_sock_info.mdr_rxudp_sock_fd == -1)
��?��?printf("failed in create_receive_unicast_udp_socket\n\n");
��?else
��?��?printf("success in create_receive_unicast_udp_socket\n\n");

��?//recvdata_udp_sock();
}

int create_txrx_udp_socket(char *media_address,int port,int tx_type, int 
sock_type, unsigned char ttl) // Option?= 1 for Multicast 0 - for Unicast
{
��?struct�� sockaddr_in mdr_client;
��?struct�� sockaddr_in mdr_server;
��?struct�� ip_mreq mdr_mreq;
��?int��?��?�mdr_sock_timeout;
��?int ��?�mdr_sockfd = -1;
��?int��?��?�mdr_sock_option;
��?int ��?�mdr_sock_type;
��?int��?��?�on;
��?unsigned char mdr_ttl;

��?////////////////////////////////////////////////////////////
��?//mdr - socket
��?////////////////////////////////////////////////////////////
��?mdr_sock_option = tx_type;

��?mdr_sock_type = sock_type;

��?mdr_ttl = ttl;

��?on = 1;

��?mdr_sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
��?if( mdr_sockfd < 0 )
��?{
��?�� ��?perror("failed socket :");
��?���� close(mdr_sockfd);
��?��?goto leave_udp;
��?}

?��?setsockopt( mdr_sockfd, SOL_SOCKET, SO_REUSEADDR, (void*)&on, sizeof(on));
��?perror("setsock SO_REUSEADDR :");

��?bzero( &mdr_client, sizeof(struct sockaddr_in) );
��?mdr_client.sin_family = AF_INET;
��?mdr_client.sin_port�� = htons(port);
?��?mdr_client.sin_addr.s_addr = INADDR_ANY;


��?if(mdr_sock_option == MULTICAST)
��?{
��?��?setsockopt(mdr_sockfd, IPPROTO_IP, IP_MULTICAST_TTL, &mdr_ttl, 
sizeof(mdr_ttl));
��?��?perror("setsockopt IP_MULTICAST_TTL :");

��?��?if(mdr_sock_type == RECEIVE)
��?��?{
��?��?��?mdr_mreq.imr_multiaddr.s_addr = inet_addr(media_address);
��?��?��?mdr_mreq.imr_interface.s_addr = htonl(INADDR_ANY);

��?��?��?setsockopt(mdr_sockfd, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mdr_mreq, 
sizeof(struct ip_mreq));
?��?��?��?perror("setsock IP_ADD_MEMBERSHIP :");

��?��?��?mdr_sock_timeout = 100;
��?��??��?setsockopt(mdr_sockfd, SOL_SOCKET, SO_RCVTIMEO, (char *) 
&mdr_sock_timeout, sizeof(int));
��?��?��?perror("setsock SO_RCVTIMEO :");
��?��?}
��?}

?��?if(bind(mdr_sockfd, (struct sockaddr *)&mdr_client, sizeof( struct sockaddr 
) ) < 0 )
��?{
��?��?perror("failed bind :");
��?��?close(mdr_sockfd);
��?��?goto leave_udp;
��?}

?��?bzero( &mdr_server, sizeof(struct sockaddr_in) );
��?mdr_server.sin_family = AF_INET;
��?mdr_server.sin_port�� = htons(port);
?��?mdr_server.sin_addr.s_addr = inet_addr(media_address);

��?return mdr_sockfd;

��?leave_udp:

��?��?��?return -1;
}

int main()
{
��?retransmit_mdr_stream();

��?return 0;
}

-- 
Thanks & Regards,
K.Sathish Kumar.
_______________________________________________
Davinci-linux-open-source mailing list
[email protected]
http://linux.davincidsp.com/mailman/listinfo/davinci-linux-open-source

Reply via email to