1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include "sockcom.h" main() { int sockfd,newsockfd,length,count; struct sockaddr_in server; char buf[1024]; sockfd=socket(AF_INET,SOCK_STREAM,0); server.sin_family=AF_INET; server.sin_addr.s_addr=INADDR_ANY; server.sin_port=0; if(bind(sockfd,(struct sockaddr *)&server,sizeof(server))<0) perror("bind stream socket"); length=sizeof(server); if(getsockname(sockfd,(struct sockaddr *)&server,&length)<0) perror("getting socket name"); printf("socket port #%d\n",ntohs(server.sin_port)); listen(sockfd,5); while(1) { newsockfd=accept(sockfd,(struct sockaddr *)0,(int *)0); if(!fork()) { close(sockfd); bzero(buf,sizeof(buf)); if((count=recv(newsockfd,buf,sizeof(buf),0))<0) perror("Reading stream message"); printf("message received: %s\n",buf); exit(0); } close(newsockfd); } }
|