TCP:
-
提供面向连接的
-
可靠的数据传输服务
-
数据无误,数据无丢失,数据无失序,数据无重复到达的通信
在数据传输过程中会给每一个数据包编上一个编号(序列号),对方收到后会给出对应的应答(应答包)。
-
传输效率低,耗费资源多(因为每一个包都有两次交互:数据包+应答包)
-
数据的收发不是同步的,不存在数据边界
为了提高效率,会将多个足够小且发送间隔短的包合成一个包发送,将这种情况称之为粘包现象;
代码实现
#include<stdio.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<arpa/inet.h>
#include<string.h>
#include<unistd.h>
#include<netinet/in.h>
//打印错误信息的宏函数
#define ERR_MSG(msg) do{\
fprintf(stderr,"__%d__",__LINE__);\
perror(msg);\
}while(0)
#define PORT 6666 //范围为1024~49151
#define IP "192.168.31.141" //本机IP,用ifconfig查看
int main(int argc, const char *argv[])
{
//创建流式套接字
int sfd = socket(AF_INET,SOCK_STREAM,0);
if(