C/S与B/S的优缺点
C/S
优点:
- 由于客户端实现与服务器的直接连接没有中间环节因此响应更快
- 操作界面漂亮,形式多样,可以充分满足客户本身的个性化要求
- C/S结构的管理信息系统具有较强的事务处理能力,能实现复杂的业务流程
缺点:
- 需要安装专门的客户端程序,分布功能弱,针对面广,且不具备网络条件的用户群体,不能够实现快速部署和安装
- 兼容性差对不同的开发工具,具有较大的局限性,采用不同的工具需要重新改写程序
- 开发成本高,需要具有一定的专业水平的技术人员才能完成
B/S
优点:
- 具备分布式特点,可以随时随地进行查询,浏览等业务
- 业务拓展简单,通过增加网页即可增加服务器功能
- 维护方便,只需要改变网页,即可实现所以用户同步更新
- 开发简单
缺点:
- 表现要达到C/S程序的程度要花费不少精力
- 在速度和安全上需要花费巨大的设计成本,这是B/S架构的最大的问题
UDP协议的C/S实现
UDP协议没有建立来凝结特性,所以UDP协议没有自动记录对方IP和端口号的特点,每次发送数据时,必须亲自制定和对方的IP和端口号,只有这样才能把数据发送给对方
UDP通信过程:
- 调用socket创建套接字
- bind绑定固定的IP和端口号
- 调用sendto和recvfrom函数,发送和接收数据
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,const struct sockaddr *dest_addr, socklen_t addrlen);
功能:发送数据当后面两个参数位NULL和0时,功能相当于send,send专门用于面向连接的通信。但是对于像udp这种的无连接协议必须使用sendto,因此必须使用后两个参数
参数:
sockfd:套接字文件描述
*buf:存放数据缓存
len:缓存大小
flags:0
struct sockaddr *dest_addr:填写目标的IP和端口
socklen_t addrlen:dest_addr的大小返回值:成功返回发送的字节数,失败返回-1
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,struct sockaddr *src_addr, socklen_t *addrlen);
功能:接收数据当后面两个参数位NULL和0时,功能相当于send,send专门用于面向连接的通信。但是对于像udp这种的无连接协议必须使用sendto,因此必须使用后两个参数
参数:
sockfd:套接字文件描述
*buf:应用缓存
len:缓存大小
flags:0
struct sockaddr *dest_addr,:填写目标的IP和端口
socklen_t *addrlen:dest_addr的大小返回值:成功返回发送的字节数,失败返回-1
广播特点
- 一个人发,其他所有人都接收
- 广播只能在局域网内部有效,广播数据是无法越过路由器的,