Witam,
Wyświetla mi się błąd :
serwertcp.cc: In function ‘int main()’:
serwertcp.cc75: error: invalid conversion from ‘int*’ to ‘socklen_t* {aka unsigned int*}’ [-fpermissive]
/usr/include/i386-linux-gnu/sys/socket.h12: error: initializing argument 3 of ‘int accept(int, sockaddr*, socklen_t*)’ [-fpermissive]
newsockfd = accept(sockfd, (struct sockaddr *) &klient_adres, &klient ); <--- ta konstrukcja to z książki
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
using namespace std;
int main()
{
unsigned int port = 6666; /*port serwera*/
struct sockaddr_in serwer_adres; /*adres serwera*/
struct sockaddr_in klient_adres; /*adres serwera*/
int sockfd, newsockfd;
int klient;
char recv_client_msg[100];
int rc;
if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
printf("blad socket()");
return 1;
}
//dowiazanie adesu lokalnego by umozliwic wysylanie klientowi pakietu do nas
bzero((char *)&serwer_adres, sizeof(serwer_adres));
serwer_adres.sin_family = AF_INET;
serwer_adres.sin_port = ntohs(port);
serwer_adres.sin_addr.s_addr = htonl(INADDR_ANY); //INDADDR_ANY oznacza ze wyrazamy zgode na połaczenie z dowolnym interfejsem internetu
/*wiazanie adresu z gniazdem*/
if (bind(sockfd, (struct sockaddr *) &serwer_adres, sizeof(serwer_adres)) == -1)
{
printf("blad bind()\n");
return 1;
}
listen(sockfd, 3);
klient = sizeof(klient_adres);
newsockfd = accept(sockfd, (struct sockaddr *) &klient_adres, &klient );
if(newsockfd == -1)
{
printf("blad accept()");
return 1;
}
read(newsockfd ,recv_client_msg, 100);
puts(recv_client_msg);
}