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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| #include"sys/ipc.h" #include"sys/msg.h" #include"iostream" #include"unistd.h" #include"string.h" #include"sys/types.h" #include"sys/shm.h" #include"sys/socket.h" #include"arpa/inet.h" #include"signal.h"
int fd; void cl(int p){ close(fd); printf("terminated\n"); exit(-1); }
int main(){
int socketfd; socketfd=socket(AF_INET,SOCK_STREAM,0);
fd=socketfd; signal(SIGINT,cl);
sockaddr_in server_addr; server_addr.sin_family=AF_INET; inet_pton(AF_INET,"0.0.0.0",&(server_addr.sin_addr)); server_addr.sin_port=htons(9000); bind(socketfd,(sockaddr*)(&server_addr),sizeof(server_addr));
listen(socketfd,10);
sockaddr_in client_addr; int conntfd; char client_ip[16]; int client_port=0; char msg[100]; socklen_t client_len=sizeof(client_addr); while(1){ printf("listen...\n"); conntfd=accept(socketfd,(sockaddr*)(&client_addr),&client_len); inet_ntop(AF_INET,&client_addr.sin_addr,client_ip,16); client_port=ntohs(client_addr.sin_port); printf("accept %s:%d\n",client_ip,client_port); memcpy(msg,"hello!",sizeof("hello!")); send(conntfd,msg,100,0); recv(conntfd,msg,sizeof(msg),0); printf("client:%s\n",msg); }
return 0; }
|