送信したファイルの内容を印刷するプログラムがあります。
struct addrinfo hints;
struct addrinfo *serverInfo;
memset(&hints, 0, sizeof(hints));
hints.ai_family = AF_UNSPEC;
hints.ai_socktype = SOCK_STREAM;
getaddrinfo(NULL, PUERTO, &hints, &serverInfo);
//socket para escuchar
int listenningSocket;
listenningSocket = socket(serverInfo->ai_family, serverInfo->ai_socktype, serverInfo->ai_protocol);
bind(listenningSocket,serverInfo->ai_addr, serverInfo->ai_addrlen);
freeaddrinfo(serverInfo);
listen(listenningSocket, BACKLOG);
struct sockaddr_in addr;
socklen_t addrlen = sizeof(addr);
int socketCliente = accept(listenningSocket, (struct sockaddr *) &addr, &addrlen);
char package[PACKAGESIZE];
int status = 1;
printf("\nCliente conectado. Esperando mensajes:\n");
printf("\nEl contenido del script es: \n");
while (status != 0) {
status = recv(socketCliente, (void*) package, PACKAGESIZE, 0);
if (status != 0) printf("%s", package);
}
close(socketCliente);
close(listenningSocket);
しかし、私はこのプログラムが私が印刷したい他のものを聞くことを望んでいます。そのため、ソケットを循環させ、ソケットをリッスンする必要があります。関数が必要であることは理解select()
していますが、自分のコードでそれを使用する方法がわかりません。