Приветствую всех!
Вроде все делал по доке, но клиент с сервером не соединяется. Пишу на С под FreeBSD.
Вот программа-сервер:
main (int argc, char *argv[]) {
int servAddrLen;
char host_addr[16];
char msg[100], comm[100], buff[8192];
struct sockaddr_in serv_addr;
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = INADDR_LOOPBACK;
serv_addr.sin_port = htons (tcp_port);
if((sockfd=socket(AF_INET, SOCK_STREAM, 0))<0)
print_error();
else {
#ifdef DEBUG
fprintf(stderr, "Сокет создан\n");
#endif
}
servAddrLen=sizeof(serv_addr);
bind (sockfd, (struct sockaddr *) &serv_addr, sizeof(servAddrLen));
if (listen (sockfd, 10)<0) {
fprintf(stderr, "Error listen\n");
exit(-1);
}
while ((accSock=accept(sockfd, (struct sockaddr *) &serv_addr, &(servAddrLen)))) {
if (accSock > 0) write (accSock, "Call received", 20);
}
}
А вот клиент:
main (int argc, char *argv[]) {
char host_addr[16];
char msg[100], comm[100], buff[8192], data;
struct sockaddr_in serv_addr;
int i;
sprintf(host_addr, "127.0.0.1");
bzero(&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr (host_addr);
serv_addr.sin_port = htons (tcp_port);
if((sockfd=socket(AF_INET, SOCK_STREAM, 0))<0)
print_error();
else {
#ifdef DEBUG
fprintf(stderr, "Сокет создан\n");
#endif
}
if(connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
print_error();
close(sockfd);
}
else {
#ifdef DEBUG
fprintf(stderr, "Связь с сервером создана\n");
#endif
}
while (1) {
if ((i=recv(sockfd, &buff, 20, 0))<0) {
fprintf(stderr, "Error recv\n");
exit(0);
}
buff[i]='\0';
printf ("Получено: %s\n", buff);
}
}
Буду благодарен тому кто подскажет в чем проблема.