1 //server.c
 2 
 3 #include<stdio.h>
 4 #include<stdlib.h>
 5 #include<sys/types.h>
 6 #include<sys/socket.h>
 7 #include<string.h>
 8 #include<unistd.h>
 9 #include<arpa/inet.h>
10 #include<netinet/in.h>
11 int main()
12 {
13     //服务器测试demo
14     //1 创建socket返回文件描述符
15     int lfd = socket(AF_INET,SOCK_STREAM,0);  
16     if(lfd<0)
17     {
18         printf("socket create error\n");
19     }
20 
21     //2 绑定文件描述符和ip地址以及端口
22     struct sockaddr_in serv;
23     memset(&serv,0x00,sizeof(serv));
24     serv.sin_family = AF_INET;//表示用ip4协议
25     serv.sin_port = htons(6666);//表示采用6666端口
26 //    inet_pton(AF_INET,"127.0.0.1",&serv.sin_addr.s_addr);
27     serv.sin_addr.s_addr = htonl(INADDR_ANY);//表示本地可用任意ip
28     int ret =bind(lfd,(const struct sockaddr*)&serv,sizeof(serv));
29     if(ret<0)
30     {
31         printf("bind error\n");
32         return -1;
33     }
34     //表示绑定在本地,端口为6666,协议为ip4
35 
36     //3 监听
37     listen(lfd,128);
38 
39     //4    建立连接
40     int cfd = accept(lfd,NULL,NULL);
41     //这里表示只是建立连接返回一个用于该连接的socket
42     //不用返回客户端的信息
43     //这里的cfd是建立连接的socket
44     
45     //5 收发数据
46     char buf[1024];
47     int n;
48     while(1)
49     {
50         memset(buf,0x00,sizeof(buf));
51         n = read(cfd,buf,sizeof(buf));
52         if(n<=0)
53         {
54             printf("client close or nothing\n");
55             break;
56         }
57         printf("n==%d,buf==%s\n",n,buf);
58     }
59     //最后关闭文件描述符
60     close(lfd);
61     close(cfd);
62     return 0;        
63 }
 1 //client.c
 2 
 3 #include<stdio.h>
 4 #include<stdlib.h>
 5 #include<sys/types.h>
 6 #include<sys/socket.h>
 7 #include<string.h>
 8 #include<unistd.h>
 9 #include<arpa/inet.h>
10 #include<netinet/in.h>
11 int main()
12 {
13 //       int socket(int domain, int type, int protocol);
14     //创建socket套接字
15     int cfd = socket(AF_INET,SOCK_STREAM,0);
16     if(cfd<0)
17     {
18         printf("create socket error\n");
19     }
20     
21     //连接服务器
22     struct sockaddr_in serv;
23     serv.sin_family = AF_INET;
24     serv.sin_port = htons(6666);
25     inet_pton(AF_INET,"127.0.0.1",&serv.sin_addr.s_addr);
26     int ret = connect(cfd,(const struct sockaddr*)&serv,sizeof(serv));
27     if(ret<0)
28     {
29         perror("connect error\n");
30         return -1;
31     }
32     
33     //开始读写数据
34     int n = 0;
35     char buf[1024];
36     while(1)
37     {
38         //从标准输入中写数据给buf
39         memset(buf,0x00,sizeof(buf));
40         n = read(STDIN_FILENO,buf,sizeof(buf));
41         
42         //发送数
43         write(cfd,buf,n);
44         //输入到cfd中
45         //读取缓冲区中的内容这里不采取
46         if(n<=0)
47         {
48             printf("read error or server close\n");
49             break;    
50         }
51         printf("n ==%d,buf==%s\n",n,buf);
52     }
53     //最后关闭套接字cf
54     close(cfd);
55     return 0;
56 }