Такая вот проблема. Надо написать программу-сервер. Самостоятельно написать не получилось, решил обратиться к книжке. С книжки выписал исходный код:
#include<sys/types.h>
#include<netdb.h>
#include<memory.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include <unistd.h>
#include <strings.h>
#include <errno.h>
#include <arpa/inet.h>
#include <string.h>
#define SERVER_PORT 7777
#define BUF_SIZE 64
#define MSG_TO_SEND "What is your name?\n"
int main ()
{
int sock1, sock2;
int ans_len=0, total=0;
char buffer[BUF_SIZE];
struct sockaddr_in sin, client;
memset ((char *)&sin, '\0', sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl (INADDR_ANY);
sin.sin_port = SERVER_PORT;
bind (sock1, (struct sockaddr *)&sin, sizeof(sin));
printf("Server running...\n");
listen (sock1, 3);
while(1)
{
ans_len = sizeof(client);
sock2 = accept (sock1, &client, &ans_len);
write (sock2, MSG_TO_SEND, sizeof(MSG_TO_SEND));
total+=1;
ans_len = read (sock2, buffer, BUF_SIZE);
write (1, buffer, ans_len);
printf("Client no %d\n", total);
shutdown (sock2, 0);
close(sock2);
};
return 0;
}
Но после процесса компиляции компилятор выдал сообщение:
ser.c: В функции ‘main’
ser.c:41: предупреждение: passing argument 2 of ‘accept’ from incompatible pointer type
Не могу понять, чего ему не нравится? Я попробовал скомпилировать тот же исходник на универском компе (там fedora стоит), всё скомпилировалось нормально. У меня установлена ubuntu. Мне посоветовали установить библиотеки разработок:
sudo aptitude install gcc
sudo aptitude install glibc6-dev
Сделал, но и это не помогло. Выдает всю ту же ошибку:
ser.c: В функции ‘main’
ser.c:41: предупреждение: passing argument 2 of ‘accept’ from incompatible pointer type
Что нужно сделать, что бы компиляция проходила успешно?