#include #include #include #include #include /* htohs */ #include /* htohs */ #include /* read */ #include #include /* memset */ void *thr_main(); int value; int main(int argc, char *argv[]){ pthread_t thrID; int s, sock, one=1; struct sockaddr_in my_addr; if( (s = socket(AF_INET, SOCK_STREAM, 0)) < 0 ) perror("socket"); setsockopt(s, SOL_SOCKET, SO_REUSEADDR, &one, sizeof(one)); memset(&my_addr, 0, sizeof(struct sockaddr_in)); my_addr.sin_addr.s_addr = htons(INADDR_ANY); my_addr.sin_family = AF_INET; my_addr.sin_port = htons(8889); if( bind(s, (struct sockaddr *)&my_addr, sizeof(my_addr)) <0 ) perror("bind"); if( listen(s, 2) < 0 ) perror("listen"); while(1){ if( (sock = accept(s, NULL, NULL)) < 0 ) perror("accept"); pthread_create(&thrID, NULL, thr_main, &sock); pthread_join(thrID, NULL); } return(0); } void *thr_main(int *arg){ int sock, size; char data[8]; sock = *arg; size = read(sock, data, 24); data[size] = '\0'; printf("data: %s",data); }