Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <string.h>
- #include <stdlib.h>
- #include <unistd.h>
- #include <sys/socket.h>
- #include <pthread.h>
- #include <arpa/inet.h>
- #define TEXT_SIZE 1000
- typedef struct{
- unsigned int lunghezza;
- char testo[TEXT_SIZE];
- }info;
- void *connection_handler(void *socket_desc){
- int socket = *(int*)socket_desc;
- int ripeti = 1;
- info message;
- while(ripeti){
- read(socket, &message, sizeof(info));
- if(!strncmp(message.testo,"end",3)){
- ripeti=0;
- strcpy(message.testo,"by by");
- }else{
- message.lunghezza=strlen(message.testo);
- strcpy(message.testo,"La lunghezza che ho calcolato e' ");
- }
- write(socket, &message, sizeof(info));
- }
- close(socket);
- free(socket_desc);
- pthread_exit(NULL);
- }
- int main(void){
- int server_sockfd, client_sockfd;
- int server_len, client_len;
- struct sockaddr_in server_address, client_address;
- int *new_sock;
- int res;
- pthread_t tid;
- server_sockfd = socket(AF_INET , SOCK_STREAM , 0);
- if (server_sockfd == -1) {
- perror("ERRORE ! Socket non creata\n");
- exit(EXIT_FAILURE);
- }
- printf("Socket creato\n");
- server_address.sin_family=AF_INET;
- server_address.sin_addr.s_addr=inet_addr("127.0.0.1");
- server_address.sin_port=htons(9734);
- server_len=sizeof(server_address);
- if( bind(server_sockfd,(struct sockaddr *)&server_address, server_len) < 0){
- perror("ERRORE ! Bind non eseguita\n");
- exit(EXIT_FAILURE);
- }
- printf("Bind eseguita\n");
- listen(server_sockfd, 5);
- printf("Attendo connessioni...\n");
- while(1){
- client_len=sizeof(client_address);
- client_sockfd=accept(server_sockfd, (struct sockaddr *)&client_address, &client_len);
- if(client_sockfd < 0){
- perror("ERRORE ! Socket non creato\n");
- exit(EXIT_FAILURE);
- }
- printf("Connessione accettata\n");
- new_sock= (int *)malloc(sizeof(int));
- *new_sock=client_sockfd;
- res=pthread_create(&tid, NULL, connection_handler,(void *)new_sock);
- if(res!=0){
- perror("ERRORE ! Creazione del thread fallita\n");
- exit(EXIT_FAILURE);
- }
- pthread_detach(tid);
- }
- int server_sockfd, client_sockfd;
- int server_len, client_len;
- struct sockaddr_in server_address, client_address;
- int *new_sock;
- int res;
- pthread_t tid;
- server_sockfd = socket(AF_INET, SOCK_STREAM, 0);
- if(server_sockfd == -1){
- perror("ERRORE ! Socket non creata\n");
- exit(EXIT_FAILURE);
- }
- printf("Socket creata\n");
- server_address.sin_family=AF_INET;
- server_address.sin_addr.s_addr=inet_addr("127.0.0.1");
- server_address.sin_port=htons(9734);
- server_len=sizeof(server_address);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement