最后更新:2022-03-28 08:21:30 手机定位技术交流文章
TCP和UDP是TCP/IP网络结构最初传输层的两个不同的通信议定书。


TCP优缺点:
优点:
1. TCP允许以安全的方式明确建立和终止连接。
TCP确保数据传输是可靠的、相继的(按交付的顺序接收数据包)和不重复的。
3. 控制TCP治疗的流动。
4.允许数据优先
如果没有发送数据, TCP 设置的接口将返回错误状态条件。
6. TCP通过保持连续性并将其破碎成小块处理巨大的数据块。 - 程序员不需要了解这一点。
缺点:在发送数据时,TCP必须建立(并保持)连接。这种连接增加了通信过程的费用,比UDP慢。
UDP优缺点:
1. 联合民主党不需要连接。
2. 由于接收人接受包件的接收(或者如果包件抵达时未正确,包件自动重新发送),UDP没有支付任何费用。
联合民主党协议是为短期应用和信息管理创建的。
联合DP使用的网络带宽低于基于数据包所附数据包的TDP所需的网络带宽。
TCP服务端:
TCP客户端:
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#define PORT 2345
#define DSET_IP_ADDRESS “192.168.218.141”
int main(int argc, char *argv[])
{
int sockfd;
char buffer[1024];
struct sockaddr_in server_addr;
");
fgets(buffer,1024,stdin);
write(sockfd,buffer,strlen(buffer));
}
UDP服务端:
#include<stdio.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<unistd.h>
#include<errno.h>
#include<string.h>
#include<stdlib.h>
#define SERV_PORT 3000
int main(int argc, char *argv[])
{
/按钮描述符号 insock_fd;
int recv_num;
int send_num;
int client_len;
char recv_buf[20];
struct sockaddr_in addr_serv;
adr_client;/ server 和客户端地址
");
}
");
}
");
recv_num = recvfrom(sock_fd,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&addr_client,&client_len);
if(recv_num < 0){
printf("bad
");
perror(“again recvfrom”);
exit(1);
} else{
recv_buf[recv_num]=’’;
printf("recv sucess:%s
",recv_buf);
}
printf("begin send:
");
send_num = sendto(sock_fd,recv_buf,recv_num,0,(struct sockaddr *)&addr_client,client_len);
if(send_num < 0){
perror(“sendto”);
exit(1);
} else{
printf("send sucessful
");
}
}
close(sock_fd);
}
UDP客户端:
#include<stdio.h>
#include<string.h>
#include<errno.h>
#include<stdlib.h>
#include<unistd.h>
#include<sys/types.h>
#include<sys/socket.h>
#include<netinet/in.h>
#define DEST_PORT 3000
#define DSET_IP_ADDRESS “192.168.1.103”
int main(int argc, char *argv[])
{
int sock_fd;/套接字文件描述符/
int send_num;
int recv_num;
int dest_len;
char send_buf[20]={“hello tiger”};
char recv_buf[20];
struct sockaddr_in addr_serv;/客户地址、服务地址/
");
send_num = sendto(sock_fd,send_buf,sizeof(send_buf),0,(struct sockaddr *)&addr_serv,dest_len);
if(send_num < 0){
perror(“sendto”);
exit(1);
} else{
printf("send sucessful:%s
",send_buf);
}
");
recv_buf[recv_num]=’’;
printf("the receive:%s
",recv_buf);
}
}
参考:
本文由 在线网速测试 整理编辑,转载请注明出处。