V
Vlad Dogaru
Hello,
I am trying to write a simple program to teach myself sockets. The
following bit of code fails with:
"connect: Socket operation on non-socket". What am I missing?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <strings.h>
#include <sys/select.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
int main(int argc, char **argv)
{
int s1, s2; /* socket descriptors */
extern int errno;
struct sockaddr_in sa1, sa2;
char aux[MAX_STR_LEN];
struct hostent *hp;
if (argc != 5) {
printf("Usage: %s <host1> <port1> <host2> <port2>\n", argv[0]);
return 0;
}
if ((hp=gethostbyname(argv[1])) == 0) {
perror("gethostbyname");
return errno;
}
bzero(&sa1, sizeof sa1);
sa1.sin_family = AF_INET;
sa1.sin_port = htons(atoi(argv[2]));
sa1.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
if ((s1=socket(AF_INET, SOCK_STREAM, 0) == -1)) {
perror("socket");
return errno;
}
if (connect(s1, (void *) &sa1, sizeof (sa1)) == -1) {
perror("connect");
return errno;
}
printf("Socket 1 connected");
Also, having two sockets open, can I use select() to read from them?
Can someone please point me to an example of using select() with
sockets?
Thanks in advance,
Vlad
I am trying to write a simple program to teach myself sockets. The
following bit of code fails with:
"connect: Socket operation on non-socket". What am I missing?
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <errno.h>
#include <strings.h>
#include <sys/select.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netdb.h>
int main(int argc, char **argv)
{
int s1, s2; /* socket descriptors */
extern int errno;
struct sockaddr_in sa1, sa2;
char aux[MAX_STR_LEN];
struct hostent *hp;
if (argc != 5) {
printf("Usage: %s <host1> <port1> <host2> <port2>\n", argv[0]);
return 0;
}
if ((hp=gethostbyname(argv[1])) == 0) {
perror("gethostbyname");
return errno;
}
bzero(&sa1, sizeof sa1);
sa1.sin_family = AF_INET;
sa1.sin_port = htons(atoi(argv[2]));
sa1.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr;
if ((s1=socket(AF_INET, SOCK_STREAM, 0) == -1)) {
perror("socket");
return errno;
}
if (connect(s1, (void *) &sa1, sizeof (sa1)) == -1) {
perror("connect");
return errno;
}
printf("Socket 1 connected");
Also, having two sockets open, can I use select() to read from them?
Can someone please point me to an example of using select() with
sockets?
Thanks in advance,
Vlad