Re: Socket problem on Ubuntu
Instead :
Code:
if(bind(sin_serv,&sin_serv,sizeof(sin_serv))<0)
Try :
Code:
if(bind(sock_serv,&sin_serv,sizeof(sin_serv))<0)
Re: Socket problem on Ubuntu
Thank you but the problem remains, here are the new:
Code:
#include<stdio.h>
#include<string.h>
#include<signal.h>
#include<sys/time.h>
#include<sys/socket.h>
#include<sys/types.h>
#include<netinet/in.h>
#include<netdb.h>
#define PORTS 6260 //port server
int main(void)
{
struct sockaddr_in sin_serv; // server structure
struct sockaddr_in sin_clien; // client structure
int namelen, sock_serv;
int pid, statut,n,i,lg;
char line[100];
if(sock_serv=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP)<0)
{
perror("socket" );
return 0;
}
bzero(&sin_serv,sizeof(sin_serv));
sin_serv.sin_family=AF_INET;
sin_serv.sin_port=htons(PORTS);
sin_serv.sin_addr.s_addr=INADDR_ANY;
if(bind(sock_serv,(struct sockaddr *)&sin_serv,sizeof(sin_serv))<0)
{
perror("bind" );
return 0;
}
/************ Receive the message **************/
int size_sin_clien=sizeof(sin_clien);
n=recvfrom(sock_serv,line,strlen(line),0,(struct sockaddr *)&sin_clien,&size_sin_clien);
printf("my message %s is well received it is longer: %d", line,strlen(line));
return 1;
}
why its not working?
Re: Socket problem on Ubuntu
Does the message remains exactly the same (bind: Socket operation on non-socket) or is it that the program goes a step further?
I have a somewhat similar program, but instead of
Code:
sin_serv.sin_addr.s_addr = INADDR_ANY;
I
Code:
sin_serv.sin_addr.s_addr = inet_addr(ip_addr); // e.g. inet_addr("123.10.20.30")
And below the line of recvfrom does not seem correct. I will rather:
Code:
n=recvfrom(sock_serv,line,sizeof(line),0,(struct sockaddr *)&sin_clien,&size_sin_clien);