C++客户端和服务器的基础概念

1.C/S模式(客户端/服务器):客户机负责与用户交互,收集用户信息,通过网络向服务器发送请求

 

2.B/S模式(浏览器/服务器):客户端同一采用浏览器,通过web浏览器向web服务器提出请求,由web服务器对数据库进行操作,并将结果传回客户端

 

3.客户端、服务器关系框架图

 

 

4.服务器

①创建套接字 int socket(int domain, int type, int protocol);

domain:使用何种的地址类型

AF_INET(IPv4网络套接字类型)

AF_INET6(IPv6)

AF_UNIX(Unix系统本地通讯)

type:设置通讯的协议类型

SOCK_STREAM:TCP协议

(主要用于数据下载,文件传输,可靠性要求高的应用)

SOCK_DGRAM:UDB协议

(面向无连接,可靠性低,传输速度快,应用于视频会议、聊天等可靠性要求不高、传输速度快的应用)

SOCK_RAW:IP

(网络层协议,提供了网络地址标识标准)

protocol:用来指定socket所使用的传输协议编号

一般设置为0即可

②绑定 int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);

IP、端口的初始设置

    struct  sockaddr_in ser_add;

        ser_add.sin_family = AF_INET;

      ser_add.sin_port = htons(8099);//端口号

     ser_add.sin_addr.s_addr = htonl(INADDR_ANY);

 

③监听  int listen(int sockfd, int backlog);

backlog:监听队列的长度设置

SOMAXCONN 128

SOMAXCONN 参数的扩展知识

 

④等待int accept(int fd, sockaddr * restrict_addr, socklen_t * restrict_addr_len) 客户端:

服务端和客户端未连接成功时,不能使用套接字的描述符进行通讯,也就是套接字此时处于阻塞状态,知道连接成功时,才能进行传输数据

accept

 

5.客户端:

①创建套接字:int socket(int domain, int type, int protocol);

 

②连接:  int connect(int fd, const sockaddr * addr, socklen_t len);

 

 

6.解决客户端连接不上服务器的问题:

  1. 检测IP地址、端口是否有误
  2. 检测是否能ping通
  3. 检测端口是否能连接语句:ncc  IP地址  端口号  
  4. 端口是否允许访问

7.传输不同类型

定义结构体时分配一个类型,对接收的数据进行类型判断即可

猜你喜欢

转载自blog.csdn.net/m0_49036370/article/details/113879981