giobaxx
1st November 2011, 06:05 PM
I'm studying socket programming, and i was trying to do some very simple example
like this
# include <strings.h>
# include <stdlib.h>
# include <netinet/in.h>
# include <stdio.h>
# include <sys/types.h>
# include <sys/socket.h>
int main(int argc, char *argv[]){
struct sockaddr_in myself, peer;
int peer_len = sizeof(peer);
int b_len;
int s, i;
char buf[1500];
if (argc < 2) {
fprintf (stderr, "Usage: %s port_number\n", argv[0]);
exit(1);
}
if ((s=socket(AF_INET, SOCK_DGRAM, 0))==-1) {
perror("socket");
exit (1);
}
bzero((char *) &myself, sizeof(myself));
myself.sin_family=AF_INET;
//myself.sin_addr.s_addr=INADDR_ANY;
myself.sin_addr.s_addr=inet_addr("10.10.10.10");
myself.sin_port= htons(atoi(argv[1]));
if (bind(s, (struct sockaddr *) &myself, sizeof(myself))==-1) {
perror("bind");
exit(1);
}
while(1){
if (recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *) &peer, &peer_len)==-1){
perror("recvfrom()");
exit(1);
}
printf("Received packet from %s:%d\nData: %s\n\n",
inet_ntoa(peer.sin_addr), ntohs(peer.sin_port), buf);
}
}
When i try to bind a socket with an IP address different by the family 127.0.x.x for example 10.10.10.10 i receive an error "BIND Cannot assign requested address". what i can do?.....tanks
like this
# include <strings.h>
# include <stdlib.h>
# include <netinet/in.h>
# include <stdio.h>
# include <sys/types.h>
# include <sys/socket.h>
int main(int argc, char *argv[]){
struct sockaddr_in myself, peer;
int peer_len = sizeof(peer);
int b_len;
int s, i;
char buf[1500];
if (argc < 2) {
fprintf (stderr, "Usage: %s port_number\n", argv[0]);
exit(1);
}
if ((s=socket(AF_INET, SOCK_DGRAM, 0))==-1) {
perror("socket");
exit (1);
}
bzero((char *) &myself, sizeof(myself));
myself.sin_family=AF_INET;
//myself.sin_addr.s_addr=INADDR_ANY;
myself.sin_addr.s_addr=inet_addr("10.10.10.10");
myself.sin_port= htons(atoi(argv[1]));
if (bind(s, (struct sockaddr *) &myself, sizeof(myself))==-1) {
perror("bind");
exit(1);
}
while(1){
if (recvfrom(s, buf, sizeof(buf), 0, (struct sockaddr *) &peer, &peer_len)==-1){
perror("recvfrom()");
exit(1);
}
printf("Received packet from %s:%d\nData: %s\n\n",
inet_ntoa(peer.sin_addr), ntohs(peer.sin_port), buf);
}
}
When i try to bind a socket with an IP address different by the family 127.0.x.x for example 10.10.10.10 i receive an error "BIND Cannot assign requested address". what i can do?.....tanks