#include //fprintf, printf, perror #include //exit, close, read #include //socket, bind, listen, accept, send #include //bind, accept, send #include //htons #include //strncpy #include #include //exit #include #include #include int main(int argc,char**argv){ fd_set deskriptor_set,orig_set; int s,connection_socket; struct sockaddr_in server_address,client_address; socklen_t client_sa_len=sizeof(client_address); char buffer[80]; if(argc!=2){ fprintf(stderr,"\nUsage: %s ",argv[0]); exit(1); } if((s=socket(PF_INET,SOCK_STREAM,0))<0){ perror("socket"); exit(1); } FD_ZERO(&deskriptor_set); FD_SET(s,&deskriptor_set); FD_SET(0,&deskriptor_set); // if(FD_ISSET(s,&deskriptor_set)){ // } server_address.sin_family=PF_INET; server_address.sin_port=htons(atoi(argv[1])); server_address.sin_addr=inet_makeaddr(INADDR_ANY,INADDR_ANY); if(bind(s,(struct sockaddr*)&server_address,sizeof(server_address))<0){ perror("bind"); close(s); exit(1); } if(listen(s,2)<0){ perror("listen"); close(s); exit(1); } orig_set=deskriptor_set; while(1){ if((connection_socket=accept(s,(struct sockaddr*)&client_address,(socklen_t*)&client_sa_len))<0){ perror("accept"); close(s); exit(1); } printf("Verbindung von %s:%d\n",inet_ntoa(client_address.sin_addr),ntohs(client_address.sin_port)); int anzahl=read(connection_socket,buffer,sizeof(buffer)/sizeof(unsigned char)); if(anzahl<=0){ perror("read"); }else{ buffer[anzahl]=0; printf("\nempfangen: %s\n",buffer); } strncpy(buffer,"hallo, wie gehts?",sizeof(buffer)/sizeof(char)); send(connection_socket,buffer,strlen(buffer),0); close(connection_socket); } exit(0); }