客户端的代码:
1 #include"utili.h" 2 3 int main() 4 { 5 int sockCli = socket(AF_INET, SOCK_STREAM, 0); 6 if(sockCli == -1) 7 Perror("socket"); 8 struct sockaddr_in addrSer; 9 addrSer.sin_family = AF_INET; 10 addrSer.sin_port = htons(SERVER_PORT); 11 addrSer.sin_addr.s_addr = inet_addr(SERVER_IP); 12 13 socklen_t len = sizeof(struct sockaddr); 14 int res = connect(sockCli, (struct sockaddr*)&addrSer, len); 15 if(res == -1) 16 { 17 printf("Client Connect Server Fail.\n"); 18 exit(1); 19 } 20 else 21 { 22 printf("Client Connect Server OK.\n"); 23 } 24 25 char sendbuf[MAX_BUFFER_SIZE]; 26 char recvbuf[MAX_BUFFER_SIZE]; 27 while(1) 28 { 29 recv(sockCli, recvbuf, MAX_BUFFER_SIZE, 0); 30 printf("Ser:>%s\n",recvbuf); 31 32 printf("Cli:>"); 33 scanf("%s",sendbuf); 34 send(sockCli, sendbuf, strlen(sendbuf)+1, 0); 35 } 36 37 close(sockCli); 38 return 0; 39 }
共用的头文件;
1 #pragma once 2 3 #include<stdio.h> 4 #include<unistd.h> 5 #include<string.h> 6 #include<stdlib.h> 7 #include<netinet/in.h> 8 #define SERVER_IP "127.0.0.1" 9 #define SERVER_PORT 9090 10 11 #define MAX_BUFFER_SIZE 255 12 #define LISTEN_QUEUE_SIZE 5 13 void Perror(char *str) 14 { 15 perror(str); 16 exit(1); 17 }
服务器端的代码:
1 #include"utili.h" 2 3 int main() 4 { 5 int sockSer = socket(AF_INET,SOCK_STREAM,0); 6 if(sockSer == -1) 7 Perror("socket"); 8 struct sockaddr_in addrSer,addrCli; 9 addrSer.sin_family = AF_INET; 10 addrSer.sin_port = htons(SERVER_PORT); 11 addrSer.sin_addr.s_addr = inet_addr(SERVER_IP); 12 13 socklen_t len = sizeof(struct sockaddr); 14 int res = bind(sockSer,(struct sockaddr*)&addrSer,len); 15 if(res == -1) 16 Perror("beind"); 17 18 res = listen(sockSer,LISTEN_QUEUE_SIZE); 19 if(res == -1) 20 Perror("listen"); 21 22 int sockConn; 23 sockConn = accept(sockSer,(struct sockaddr*)&addrCli,&len); 24 if(sockConn == -1) 25 { 26 printf("Server Accept Client Connect Fail.\n"); 27 exit(1); 28 } 29 else 30 { 31 printf("Server Accept Client Connect OK.\n"); 32 } 33 34 char sendbuf[MAX_BUFFER_SIZE]; 35 char recvbuf[MAX_BUFFER_SIZE]; 36 while(1) 37 { 38 printf("Ser:>"); 39 scanf("%s",sendbuf); 40 send(sockConn,sendbuf,strlen(sendbuf)+ 1,0); 41 42 recv(sockConn,recvbuf,MAX_BUFFER_SIZE,0); 43 printf("Cli:>%s\n",recvbuf); 44 } 45 close(sockSer); 46 return 0; 47 }