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