Comment mon client peut-il envoyer deux requêtes (sur deux terminaux différents) au serveur en même temps? Quand je l'essaie, un seul fonctionne, l'autre ferme la douille.C Programmation de socket, 2 requêtes client en même temps
main ()
{
readData();
int serverFd, clientFd, clientFd2,serverLen, clientLen;
struct sockaddr_un serverAddress;/* Server address */
struct sockaddr_un clientAddress; /* Client address */
struct sockaddr* serverSockAddrPtr; /* Ptr to server address */
struct sockaddr* clientSockAddrPtr; /* Ptr to client address */
/* Ignore death-of-child signals to prevent zombies */
signal (SIGCHLD, SIG_IGN);
serverSockAddrPtr = (struct sockaddr*) &serverAddress;
serverLen = sizeof (serverAddress);
clientSockAddrPtr = (struct sockaddr*) &clientAddress;
clientLen = sizeof (clientAddress);
/* Create a socket, bidirectional, default protocol */
serverFd = socket (AF_LOCAL, SOCK_STREAM, DEFAULT_PROTOCOL);
serverAddress.sun_family = AF_LOCAL; /* Set domain type */
strcpy (serverAddress.sun_path, "countries"); /* Set name */
unlink ("countries"); /* Remove file if it already exists */
bind (serverFd, serverSockAddrPtr, serverLen); /* Create file */
listen (serverFd, 5); /* Maximum pending connection length */
while (1) /* Loop forever */
{
/* Accept a client connection */
clientFd = accept (serverFd, clientSockAddrPtr, &clientLen);
while (fork() == 0) /* Create child to send recipe */
{
int recvquery;
char countrynamereceivedquery[200];
while (recvquery=read(clientFd,countrynamereceivedquery,sizeof(countrynamereceivedquery)))
{
//print results
}
}
Ceci est mon programme serveur. Je l'exécute comme un processus d'arrière-plan, puis exécute le programme client qui peut rechercher le fichier texte stocké dans un tableau dans le serveur. À l'heure actuelle, lorsque j'ouvre deux terminaux et que je lance le client en même temps, un client quitte le programme, l'autre client reçoit la requête du jus-quit-client et effectue une recherche sur le serveur. J'ai créé deux sockets mais le client se ferme dans les deux terminaux.
Utilisez-vous une ou deux prises séparées? –
Parlons-nous des sockets TCP? –
Juste une prise. – svenus