Всем привет! Так как я совершенно не знаком с Си, то обращаюсь к вам за помощью! Есть такой-вот код сокетного сервера на С:
Код | #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <strings.h>
int main( int argc, char *argv[] ) { int sockfd, newsockfd, portno, clilen; char buffer[256]; struct sockaddr_in serv_addr, cli_addr; int n;
/* First call to socket() function */ sockfd = socket(AF_INET, SOCK_STREAM, 0); if (sockfd < 0) { perror("ERROR opening socket"); return 1; } /* Initialize socket structure */ bzero((char *) &serv_addr, sizeof(serv_addr)); portno = 5001; serv_addr.sin_family = AF_INET; serv_addr.sin_addr.s_addr = INADDR_ANY; serv_addr.sin_port = htons(portno); /* Now bind the host address using bind() call.*/ if (bind(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) { perror("ERROR on binding"); return 1; } /* Now start listening for the clients, here * process will go in sleep mode and will wait * for the incoming connection */ listen(sockfd,5); clilen = sizeof(cli_addr); while (1) { newsockfd = accept(sockfd, (struct sockaddr *) &cli_addr, &clilen); if (newsockfd < 0) { perror("ERROR on accept"); return 1; } /* Create child process */ int pid = fork(); if (pid < 0) { perror("ERROR on fork"); return 1; } if (pid == 0) { /* This is the client process */ //printf("Close socket connection...\n"); close(sockfd); doprocessing(newsockfd); return 0; } else { close(newsockfd); } } /* end of while */ }
int doprocessing (int sock) { int n; char buffer[256];
bzero(buffer,256);
n = read(sock,buffer,255); if (n < 0) { perror("ERROR reading from socket"); return 1; } printf("Here is the message: %s\n",buffer); n = write(sock, "I got your message",18); printf("Sending message\n"); if (n < 0) { perror("ERROR writing to socket"); return 1; } }
|
Взаимодействую я с ним из флеша. Когда флешка отправляет какое-либо сообщение серверу, тот адекватно реагирует, но после этого отрубает соединение. Помогите пожалуйста поправить данный код, чтобы не отрубал соединение и продолжал слушать сообщения. |