static SOCKET startConnection(void) { HERROR_WRITE(HERROR_INFO, "[Lanc. serveur] Initialisation du serveur..."); /* Initialisation Windows */ initW32(); /* Socket */ SOCKET sock = socket(AF_INET, SOCK_STREAM, 0); SOCKADDR_IN sin; if(sock == INVALID_SOCKET) sock_error("socket()"); sin.sin_addr.s_addr = htonl(INADDR_ANY); /* Adresse */ sin.sin_port = htons(PORT); /* Port */ sin.sin_family = AF_INET; /* Protocole : TCP */ /* On lie le socket */ if(bind(sock, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR) sock_error("bind()"); HERROR_WRITE(-1, "terminee"); /* On passe en mode écoute */ if(listen(sock, MAX_CLIENTS) == SOCKET_ERROR) sock_error("listen()"); HERROR_WRITE(HERROR_INFO, "[Lanc. serveur] Serveur en mode ecoute"); return sock; }
int main() { initW32(); // Necesaria para compilar en Windows int fd, fd2; // los descriptores de archivos struct sockaddr_in server; // para la información de la dirección del servidor struct sockaddr_in client; // para la información de la dirección del cliente unsigned int sin_size; pid_t pid; if ((fd=socket(AF_INET, SOCK_STREAM, 0)) == -1 ) { printf("error en socket()\n"); exit(-1); } server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = INADDR_ANY; // INADDR_ANY coloca nuestra dirección IP automáticamente */ //bzero(&(server.sin_zero),8); memset(&(server.sin_zero), '0', 8);// escribimos ceros en el resto de la estructura if(bind(fd,(struct sockaddr*)&server, sizeof(struct sockaddr))==-1) // A continuación la llamada a bind() { printf("error en bind() \n"); exit(-1); } if(listen(fd,BACKLOG) == -1) { // llamada a listen() printf("error en listen()\n"); exit(-1); } while(1) { sin_size=sizeof(struct sockaddr_in); if ((fd2 = accept(fd,(struct sockaddr *)&client, &sin_size))==-1)// A continuación la llamada a accept() { printf("error en accept()\n"); exit(-1); } printf("Connecting with Java: %s\n", inet_ntoa(client.sin_addr) );// que mostrará la IP del cliente send(fd2,"Server_N",99,0);//Muestra que enviará el mensaje de bienvenida al cliente doprocessing(fd2); } }
int main() { initW32(); /* Necesaria para compilar en Windows */ int fd, fd2; /* los descriptores de archivos */ struct sockaddr_in server; /* para la información de la dirección del servidor */ struct sockaddr_in client;/* para la información de la dirección del cliente */ unsigned int sin_size; pid_t pid; /* A continuación la llamada a socket() */ if ((fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) { printf("error en socket()\n"); exit(-1); } server.sin_family = AF_INET; server.sin_port = htons(PORT); server.sin_addr.s_addr = INADDR_ANY;/* INADDR_ANY coloca nuestra dirección IP automáticamente */ //bzero(&(server.sin_zero),8); memset(&(server.sin_zero), '0', 8); /* escribimos ceros en el reto de la estructura */ /* A continuación la llamada a bind() */ if (bind(fd, (struct sockaddr*) &server, sizeof(struct sockaddr)) == -1) { printf("error en bind() \n"); exit(-1); } if (listen(fd, BACKLOG) == -1) { /* llamada a listen() */ printf("error en listen()\n"); exit(-1); } while (1){ sin_size = sizeof(struct sockaddr_in); /* A continuación la llamada a accept() */ if ((fd2 = accept(fd, (struct sockaddr *) &client, &sin_size)) == -1) { printf("error en accept()\n"); exit(-1); } printf("Se obtuvo una conexion desde %s\n", inet_ntoa(client.sin_addr)); /* que mostrará la IP del cliente */ //send(fd2,"Bienvenido a mi servidor Lain.\n",99,0); /* que enviará el mensaje de bienvenida al cliente */ doprocessing(fd2); } /* end while */ }