一、TCP与UDP的区别
1、基于连接与无连接
2、对系统资源的要求(TCP较多,UDP少)
3、UDP程序结构较简单
流模式与数据报模式
TCP保证数据正确性,UDP可能丢包
TCP保证数据顺序,UDP不保证
二、具体编程时的区别
1、socket()的参数不同
2、UDP Server不需要调用listen和accept
3、UDP收发数据用sendto/recvfrom函数
4、TCP:地址信息在connect/accept时确定
UDP:在sendto/recvfrom函数中每次均 需指定地址信息
5、UDP:shutdown函数无效
三、部分满足以下几点要求时,应该采用UDP 面向数据报方式
1、网络数据大多为短消息
2、拥有大量Client
3、对数据安全性无特殊要求
4、网络负担非常重,但对响应速度要求高
四、服务器程序流程(多进程):
1、程序初始化
2、填写本机地址信息
3、绑定并监听一个固定的端口
4、收到Client的连接后建立一个socket连接
5、产生一个新的进程与Client进行通信和信息处理
6、子通信结束后中断与Client的连接
五、客户端程序流程:
1、程序初始化
2、填写服务器地址信息
3、连接服务器
4、与服务器通信和信息处理
5、通信结束后断开连接
六、服务器代码
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#define MYPORT 3490 /* 监听的端口 /
#define BACKLOG 10 / listen的请求接收队列长度 */
void main() {
nt sockfd, new_fd; /* 监听端口,数据端口 */
struct sockaddr_in sa; /* 自身的地址信息 */
struct sockaddr_in