LINUX.ORG.RU

socket error


0

0

Доброго времени суток.
Помогите разодраться в чем ошибка.
вот код

#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <string.h>
#include <sys/un.h>
#include <stdlib.h>

#define QUEUE_LENGTH 10
#define BUF_LEN 4096
#define SOCK_NAME "mysocket"
#define PORT 80

int main (void)
{
int sock, client_sock;
char * buf;
int count;
struct sockaddr_in saddr; //------> РУГАЕТЬ НА ЭТУ СТРОКУ
// не могу понять что не так с sockaddr_in
sock = socket (PF_INET, SOCK_STREAM, 0);
if (sock == -1) {
fprintf (stderr, "socket() error\n");
return 1;
}

buf = (char *) malloc (BUF_LEN);
if (buf == NULL) {
fprintf (stderr, "malloc() error\n");
return 1;
}

saddr.sin_family = AF_INET;

saddr.sin_addr.s_addr = inet_addr("127.0.0.1");

saddr.sin_port = htons (PORT);
if (bind (sock, (struct sockaddr *) &saddr,
sizeof (saddr)) == -1) {
fprintf (stderr, "bind() error\n");
return 1;
}

if (listen (sock, QUEUE_LENGTH) == -1) {
fprintf (stderr, "listen() error\n");
return 0;
}

while (1) {
client_sock = accept (sock, NULL, NULL);

if (client_sock == -1) {
fprintf (stderr, "accept() error\n");
return 1;
}

if ((count = read (client_sock,
buf, BUF_LEN-1)) == -1) {
fprintf (stderr, "read() error\n");
return 1;
}

buf[count] = '\0';
printf (">> %s\n", buf);
close (client_sock);

if (!strcmp (buf, "exit")) break;
}

free (buf);
close (sock);
unlink (SOCK_NAME);
return 0;
}
Заранее огромное спасибо!

Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.