Linux_C socket 服务器与客户端交互程序(输入小写转换为大写)

client.c

 1 /* interactionSocket/client.c
 2  *                 实现终端与服务器端的交互式输入输出
 3  */
 4 #include <stdio.h>
 5 #include <stdlib.h>
 6 #include <string.h> 
 7 #include <unistd.h>
 8 #include <sys/types.h> 
 9 #include <sys/socket.h>
10 #include <netinet/in.h>
11 #include <netdb.h>
12 
13 #define MAXLINE 80
14 #define PORTNUM 12345
15 
16 int main(void) {
17   int sock, len;
18   struct sockaddr_in saddr;
19   struct hostent *hp;
20   char buf[MAXLINE];
21   char request[MAXLINE];
22   char hostname[BUFSIZ];
23 
24   sock=socket(AF_INET, SOCK_STREAM, 0);
25   if(sock==-1) exit(-1);
26   
27   bzero((void*)&saddr, sizeof(saddr));
28   //inet_pton(AF_INET, "127.0.0.1", (void*)&saddr.sin_addr);
29   gethostname(hostname, BUFSIZ);
30   hp=gethostbyname(hostname);
31   bcopy(hp->h_addr, (void*)&saddr.sin_addr, hp->h_length);
32   saddr.sin_port=htons(PORTNUM);
33   saddr.sin_family=AF_INET;
34   
35   connect(sock, (struct sockaddr *)&saddr, sizeof(saddr));
36   while( fgets(buf, MAXLINE, stdin)!=NULL) {
37     write(sock, buf, strlen(buf));
38     len=read(sock, buf, MAXLINE);
39     if(len==0)
40       printf("the other side has been closed");
41     else 
42       write(STDOUT_FILENO, buf, len);
43   }
44   close(sock);
45   return 1;
46 }

server.c

 1 /* interaction/server.c
 2  */
 3 #include <stdio.h>
 4 #include <stdlib.h>
 5 #include <netinet/in.h>
 6 #include <sys/types.h>
 7 #include <sys/socket.h>
 8 #include <string.h>
 9 #include <netdb.h>
10 
11 #define MAXLINE 80
12 #define SERV_PORT 12345
13 #define BACKLOG 20
14 int main(void ) {
15   int sock, connfd;
16   struct sockaddr_in saddr, cliaddr;
17   struct hostent *hp;
18   socklen_t cliaddr_len;
19   char buf[MAXLINE];
20   char str[MAXLINE];
21   char hostname[BUFSIZ];
22   int i, n;
23   
24   sock=socket(PF_INET, SOCK_STREAM, 0);
25   if(sock==-1)
26     exit(-1);
27   bzero((void*)&saddr, sizeof(saddr));
28   //saddr.sin_addr.s_addr=htonl(INADDR_ANY);
29   gethostname(hostname, BUFSIZ);
30   hp=gethostbyname(hostname);
31   bcopy(hp->h_addr, (void*)&saddr.sin_addr, hp->h_length);
32   saddr.sin_family=AF_INET;
33   saddr.sin_port=htons(SERV_PORT);
34   if(bind(sock, (struct sockaddr*)&saddr, sizeof(saddr))==-1)
35     exit(-1);
36   if(listen(sock, BACKLOG)==-1)
37     exit(-1);
38   printf("accepting connections...\n");
39   while(1) {
40     cliaddr_len=sizeof(cliaddr);
41     connfd=accept(sock, (struct sockaddr*)&cliaddr, &cliaddr_len);
42     while(1) {
43       n=read(connfd, buf, MAXLINE);
44       if(n==0){ 
45     printf("the other side has been closed.\n");
46     break;
47       }
48       //printf("received from %s at PORT %d\n", inet_ntop(AF_INET, &cliaddr.sin_addr, str, sizeof(str)), ntohs(cliaddr.sin_port));
49       for(i=0; i<n; i++) 
50     buf[i]=toupper(buf[i]);
51       write(connfd, buf, n);
52     }
53     close(connfd);
54   }
55 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。