udp协议 http协议

udp协议 http协议,第1张

udp协议 http协议

tcp的TIME_WAIT存在的意义
可靠地终止TCP连接
保证让迟来的TCP报文段有足够的时间被识别并丢弃

挥手可以是3次但是握手必须为3次

udp

无连接 不可靠 数据报
实时性用udp,可靠性用TCP
udp可以和TCP使用同意端口且同时运行,因为UDP无状态,收发数据时可以分清是那个协议
同一个进程可以创建多个套接字


代码:

服务端代码

#include
#include
#include
#include
#include
#include
#include
#include

int main()
{
   int sockfd=socket(AF_INET,SOCK_DGRAM,0);
                           SOCK_DGRAM代表是udp协议
   assert(sockfd!=-1);
	struct sockaddr_in saddr,caddr;
	memset(&saddr,0,sizeof(saddr));
	saddr.sin_family=AF_INET;
	saddr.sin_port=htons(6000);
	saddr.sin_addr.s_addr("127.0.0.1");
	
	int res=bind(sockfd,(struct sockaddr*)&saddr,sizeof(saddr));
	assert(res!=-1);
	while(1)
	{
	   int len=sizeof(caddr);
	   char buff[128]={0};
	   recvfrom(sockfd,buff,127,0,(struct sockaddr*)&caddr,&len);

       printf("buff=%sn",buff);
       sendto(sockfd,"ok",2,0,(struct sockaddr*)&caddr,sizeof(caddr));
       
       
	}
}

客户端代码

#include
#include
#include
#include
#include
#include
#include
#include

int main()
{
   int sockfd=socket(AF_INET,SOCK_DGRAM,0);
                           SOCK_DGRAM代表是udp协议
   assert(sockfd!=-1);
	struct sockaddr_in saddr,caddr;
	memset(&saddr,0,sizeof(saddr));
	saddr.sin_family=AF_INET;
	saddr.sin_port=htons(6000);
	saddr.sin_addr.s_addr("127.0.0.1");
	
	while(1)
	{
	   char buff[128]={0};
	   fgets(buff,128,stdin);
	   if(strncmp(buff,"end",3)==0)
	   {
	     break;
	   }
       sendto(sockfd,buff,strlen(buff)-1,0,(struct sockaddr*)&saddr,sizeof(saddr));
       memset(buff,0,128);
       int len=sizeof(saddr);
       recvfrom(sockfd,buff,127,0,(struct sockaddr*)&saddr,&len);
       printf("buff=%sn",buff);
	}
	close(sockfd);
}
http

http应用层协议,默认使用端口80
tcp:传输层协议
http短链接:浏览器发送请求,服务器回复应答报文,后关闭
http长链接:发送回复再发送再回复,多次

在浏览器中输入网址(域名),通过DNS将域名转为ip地址(也就是申请的服务器ip),然后三次握手链接,浏览器发送http请求报文,服务器回复应答报文
https更安全(加密)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5694328.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存