1.socket:创建socket伪文件生成文件描述符fd
2.bind: 给fd绑定端口和ip;
3.listen;给当前socket设置最大客户端链接
4.accept:阻塞等待客户端连接;生成客户端的fd,addr结构体(客户端端口,ip等内容)
5.read:读数据
6.write:写数据
7.close:关闭服务器的socket和客户端的socket;
#include<stdio.h>
2 #include<stdlib.h>
3 #include<string.h>
4 #include<unistd.h>
5 #include<sys/types.h>
6 #include<sys/socket.h>
7 #include<ctype.h>
8 #include<netinet/in.h>
9 #include<arpa/inet.h>
10 #define SERVER_PORT 8000
11 int main()
12 {
13 int lfd,cfd;
14 struct sockaddr_in addr;
15 struct sockaddr_in caddr;
16 lfd = socket(AF_INET,SOCK_STREAM,0);//定义socket文件
17
18 addr.sin_family=AF_INET;
19 addr.sin_port = htons(8000);
20 addr.sin_addr.s_addr = htonl(INADDR_ANY);
21
22 bind(lfd,( struct sockaddr *)&addr,sizeof(addr));//将socket套接字绑定在固定端口和ip
23
24 listen(lfd,128);//设置套接字的最大客户端连接数
25
26 socklen_t socketlen = sizeof(caddr);
27 int n = 0,i=0;
28 char buf[BUFSIZ];
29 cfd = accept(lfd,( struct sockaddr*)&caddr,&socketlen);//接收客户端连接
30 while(1)
31 {
32 n=read(cfd,buf,BUFSIZ);//读数据
33 for(i=0;i<n;i++)
34 buf[i]=toupper(buf[i]);
35 write(cfd,buf,n);//写数据
36 }
37 close(lfd);
38 close(cfd);
39 exit(1);
40 }
YanWenCheng_
发布了58 篇原创文章 · 获赞 15 · 访问量 9045
私信
关注