socket服务器简易连接

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 }
发布了58 篇原创文章 · 获赞 15 · 访问量 8978

猜你喜欢

转载自blog.csdn.net/YanWenCheng_/article/details/104102238