当前位置: 首页 > news >正文

网站建设的售后西安网站推广

网站建设的售后,西安网站推广,免费做网络推广的网站可靠吗,视频制作软件电脑版文章目录 UDP服务器封装系统调用socketbind系统调用bzero结构体清0sin_family端口号ip地址inet_addrrecvfromsendto 新指令 netstat -naup (-nlup)包装器 的两种类型重命名方式包装器使用统一可调用类型 关键字 typedef 类型重命名系统调用popen UDP服务器封装 系统调用socket …

文章目录

    • UDP服务器封装
      • 系统调用socket
      • bind系统调用
      • bzero结构体清0
      • sin_family
      • 端口号
      • ip地址
      • inet_addr
      • recvfrom
      • sendto
    • 新指令 netstat -naup (-nlup)
    • 包装器 的两种类型重命名方式
      • 包装器使用统一可调用类型
    • 关键字 typedef 类型重命名
    • 系统调用popen

UDP服务器封装

在这里插入图片描述

在这里插入图片描述

系统调用socket

创建套接字

在这里插入图片描述
返回值
在这里插入图片描述
socket返回依旧是一个文件,所以创建套接字的本质,底层就是打开一个文件,以前strcut file指向的是具体某一个磁盘上的设备,只不过我们的struct file指向的底层网卡设备,他就相当于一切皆文件。

有了对应的套接字之后未来就可以使用套接字来进行收发消息,但在进行各种收发之前,我们的服务器都必须得有一个参数socket的返回值,这个套接字创建之后呢,类比文件接口,把文件创建好得到了文件描述符,从此往后所有接口想对文件交互访问都得有fd,套接字的文件描述符同理。
在这里插入图片描述
问题
服务器绑定的端口 and IP地址是什么?

bind系统调用

在这里插入图片描述
要绑定就得用这个通用结构体,但是我们用的是sockaddr_in
每个字段都有细节
sin_zero 对应 填充 不管
在这里插入图片描述

在这里插入图片描述
通用类型结构体 头文件如图

bzero结构体清0

在这里插入图片描述
使用这个结构体需要先把他清空
然后我们就填中结构题字段就可以了

在这里插入图片描述

sin_family

sockaddr_in 里面有什么?我追进去怎么没看见sin_family字段?
利用了宏替换
在这里插入图片描述
sa_family_t 实际上是短整型,我们就填对应的16位地址类型,AF_INET
在这里插入图片描述

端口号

如果今天双方通信时,我给对方发消息,对方要发消息回我,他得知道我,我就得把端口号发给过他。
说明端口号的信息将来一定要能够发送给对方的,无论客户端还是服务器也罢。
协议一个字段都没学,但网络通信本质就是进程间通信,我要把我的端口号带上还有正常消息都给对方发过去,对方处理完也能拿着我的端口号响应给我。
结论就是端口号在网络里来回发送。
所以端口号填充到结构体里必须保证他是网络字节序,因为该端口号是要给对方发送的。
这个代码在你系统里面编译是小端,必须转大端。

在这里插入图片描述

ip地址

用户使用字符串IP传入也是字符串,而结构体中是要四字节的,字符串一个字符就是一字节明显不对应,所以需要转换
在这里插入图片描述
整数转字符串
字符串转整形 想告诉大家的是互相转难度不大

在这里插入图片描述
ip地址也要在网络当中发送,不然怎么回复与相应,客户端和服务器之间。
如果IP要被网络使用,ip出了转化成4字节ip,ip还必须是网络序列的。
赋值part1-part4都是在你本机进行的计算。
把IP地址转化成网络序列的话,无非就根据当前机器是大端小端,决定赋值的顺序,要么就是part1 = 100 or part1 = 192, part1是结构体中地址最小的,192是数值权重最高的,这样写就是大端,反过来就是小端。
所以只是决定part1 到part4赋值顺序,就可以更改我们当前IP报文形成四字节是网络序列还是主机序列。
在这里插入图片描述

  1. ip必须string转四字节Ip
  2. 四字节uint32_t 类型ip 还必须是网络序列的。
    上面图里这两个功能不用我们自己做

inet_addr

他做了两件工作 字符串转uint32_t + 转大端
在这里插入图片描述

至此这个结构体的信息只是在栈上,在用户空间而不是系统空间3-4G

在这里插入图片描述
所以还没有与套接字关联,设置进内核
在这里插入图片描述
UDP核心步骤,创建套接字+绑定
基本都是固定形式,UDP就这么多。
接下来做的工作仅仅是收发消息。

在这里插入图片描述

recvfrom

在这里插入图片描述

sendto

在这里插入图片描述
flag 发送方式 设置为0

新指令 netstat -naup (-nlup)

n能显示数字,就显示数字
a all所有
u udp
p 显示pid
在这里插入图片描述
只要能用netstat 查到我们进程./udpserver就说明我们的服务器已经启动了。

今天虽然启动了,但仅仅是巧合,这里面有坑,我们得点出来。

一个关于IP
你查到本地地址 绑定的IP是0.0.0.0,那你服务期的公网IP不是0.0.0.0啊,如果我们今天绑定服务器公网IP,你就会得到如下错误

云服务器禁止直接绑定公网ip,因为它做了虚拟化
bind(IP:0.0.0.0),凡是发给我这台主机的数据,我们都要根据端口号向上交付 — 任意地址bind
因为服务器可能有两张网卡,两个Ip,你只绑定一个,另一个ip客户端的信息你就拿不上来
在这里插入图片描述
“0.0.0.0”字符串 转 uin32_t 本来就是0
所以结构体 的另一种写法
在这里插入图片描述
从今往后虚拟机可以用公网ip,但是云服务器就端口,ip就0就行
在这里插入图片描述

一个关于port
在这里插入图片描述

端口号 16位 范围0~65535
我们一般绑定8000+往上不会有问题,你非要绑系统内定就sudo 去绑,我们不建议

就想说ip绑0,端口号8000以上的,就完了。


客户端

client 需要socket创建套接字,socket创建的网络文件描述符不用就close 关掉
在这里插入图片描述

那client需要bind吗?
客户端一定要绑定,要有自己的ip和端口,这是套接字通信,客户端也要唯一性标识。
所以要!
只不过不需要用户显示的bind! 一般由os自由随机选择。

服务器的IP和端口不要一直变,不能随机绑定,让客户端找不到,他只能由程序员来绑是确定的。

而客户端的ip和端口是多少,其实不重要,只要保证主机上的唯一性就可以。
全是由客户端给服务器发信息,服务器就能知道客户端是谁,ip port如何如何

所以系统什么时候给我bind呢?
首次发送数据的时候!

那客户端怎么知道他要发给谁,请求那个服务器的ip port
这个工作由我们来做,通过命令行参数让用户输入请求的ip port
在这里插入图片描述
怎么发
1.发什么数据 – 输入字符串
2.给谁发
我们可不止需要ip+port,同样需要构建struct sockaddr_in结构体

在这里插入图片描述
今天客户端有可能从不同的服务器收发消息吗?
客户端一气发给好几个服务器ip 的sendto,所以有可能
有可能,但今天我们就一个

在这里插入图片描述
最后客户端发什么字符串,服务器就给我返回什么字符串
就这样一来一回
在这里插入图片描述

域名其实就是ip地址
服务器一般做推广自己的域名ip,服务器的端口号约定好
今天我们客户端是利用命令行参数来进行直接绑定,服务器裸露自己的Ip和端口号

在这里插入图片描述

包装器 的两种类型重命名方式

你可以把包装器当成函数指针
在这里插入图片描述

包装器使用统一可调用类型

在这里插入图片描述

在这里插入图片描述

关键字 typedef 类型重命名

一般是重命名在默认类型 后面 ,函数指针是中间
在这里插入图片描述

把收发数据 和 处理数据 做解耦
让main函数中调用Run方法时传入一个func_t类型的可调用类型方法,处理完数据再把结果发回去
在这里插入图片描述

在这里插入图片描述

服务器收到消息把消息传递给我传进来的这个回调函数func,回调函数会把数据回调式的处理,处理完成之后把结果返回。

这样做的本质是对代码进行分层。
就是不要把字符串的处理放在我们的代码当中
在这里插入图片描述
直接使用我们传进来的方法,在上层不关心网络通信了,消息是什么样的做加工处理就行。你可以返回echo 服务期简单的处理,也可以传入不同的回调方法处理命令返回结果。
在这里插入图片描述

没人规定网络udp只能发送字符串,我们也可以认为发送的是命令啊,在服务器上创建进程再把命令执行的结果返回
在这里插入图片描述
这样写费时间,我们可以利用popen

系统调用popen

在这里插入图片描述

封装起来的管道,和子进程执行命令的应用,,popen作用是把执行命令以字符串的形式给我,popen底层我会帮你fork,我会让父子进程建立管道,让子进程把结果通过管道返回给调用方,调用方如果想得到command运行结果,你可以通过文件指针方式读取,type如果是r相当于读方式打开文件。
在这里插入图片描述
UDP应用场景

  1. ExcuteCommand
  2. 简单聊天室
  3. windows端的客户端访问Linux服务期

在这里插入图片描述


文章转载自:
http://aortic.crhd.cn
http://cyanometer.crhd.cn
http://overmany.crhd.cn
http://reputable.crhd.cn
http://mixture.crhd.cn
http://pediococcus.crhd.cn
http://hemizygous.crhd.cn
http://overtype.crhd.cn
http://pamphletize.crhd.cn
http://seajack.crhd.cn
http://ornament.crhd.cn
http://chlorophyllite.crhd.cn
http://pentahedral.crhd.cn
http://lehua.crhd.cn
http://wdc.crhd.cn
http://jayhawk.crhd.cn
http://madeira.crhd.cn
http://endocytose.crhd.cn
http://billiken.crhd.cn
http://cursed.crhd.cn
http://underemphasize.crhd.cn
http://partly.crhd.cn
http://trooper.crhd.cn
http://coidentity.crhd.cn
http://doss.crhd.cn
http://corinto.crhd.cn
http://kilometer.crhd.cn
http://constructivism.crhd.cn
http://accoutrements.crhd.cn
http://academgorodok.crhd.cn
http://basidiospore.crhd.cn
http://bronchobuster.crhd.cn
http://workstation.crhd.cn
http://ninthly.crhd.cn
http://bassein.crhd.cn
http://dixy.crhd.cn
http://hidden.crhd.cn
http://anam.crhd.cn
http://bursectomy.crhd.cn
http://siddown.crhd.cn
http://illusive.crhd.cn
http://incivilization.crhd.cn
http://serendipitous.crhd.cn
http://impassability.crhd.cn
http://honorable.crhd.cn
http://troupial.crhd.cn
http://virtueless.crhd.cn
http://semiparalysis.crhd.cn
http://reinforcer.crhd.cn
http://fetlow.crhd.cn
http://angelological.crhd.cn
http://scullion.crhd.cn
http://studied.crhd.cn
http://ashiver.crhd.cn
http://astrakhan.crhd.cn
http://cispontine.crhd.cn
http://poppethead.crhd.cn
http://neoteric.crhd.cn
http://nonfiction.crhd.cn
http://schloss.crhd.cn
http://eosinophil.crhd.cn
http://gyrocopter.crhd.cn
http://sequential.crhd.cn
http://proudly.crhd.cn
http://bylaw.crhd.cn
http://americanization.crhd.cn
http://locution.crhd.cn
http://whoseso.crhd.cn
http://subtenancy.crhd.cn
http://agonizing.crhd.cn
http://upsoar.crhd.cn
http://godliness.crhd.cn
http://stearine.crhd.cn
http://tuesday.crhd.cn
http://nhra.crhd.cn
http://endurable.crhd.cn
http://endpaper.crhd.cn
http://tigrinya.crhd.cn
http://wosa.crhd.cn
http://rif.crhd.cn
http://smug.crhd.cn
http://inkosi.crhd.cn
http://haematopoietic.crhd.cn
http://parental.crhd.cn
http://acd.crhd.cn
http://naturist.crhd.cn
http://deficit.crhd.cn
http://americana.crhd.cn
http://semimanufactures.crhd.cn
http://deshabille.crhd.cn
http://reforger.crhd.cn
http://osteoarthritis.crhd.cn
http://supercenter.crhd.cn
http://rucus.crhd.cn
http://ram.crhd.cn
http://backlog.crhd.cn
http://carroccio.crhd.cn
http://inscriptionless.crhd.cn
http://homebuilding.crhd.cn
http://oatcake.crhd.cn
http://www.15wanjia.com/news/96318.html

相关文章:

  • 泉州手机网站制作泰州百度seo
  • 网站设计用处天津seo培训
  • php网站留言板漏洞外国搜索引擎登录入口
  • 淘宝客需要自己做网站吗公司做网站推广
  • wordpress盲注阿里seo排名优化软件
  • 台湾php网站空间网络营销工具分析
  • 电脑培训零基础培训班西安网站seo服务
  • 新桥做网站公司网络推广都有什么方式
  • 网站建设服务项目百度统计登录
  • wordpress导航栏做产品分类搜索引擎优化培训
  • 爱情动做网站推荐阿里巴巴国际贸易网站
  • 网站众筹该怎么做360网址导航
  • 公司网站开发流程图沪深300指数怎么买
  • 淘宝客主题wordpressseo工资服务
  • 窍门天下什么人做的网站自己搭建网站
  • 太原那有网站设计公司网站seo教材
  • 教学网站模板下载百度销售
  • 做独立销售网站西安网站建设公司
  • 专业网站开发软件网络营销成功的原因
  • 软件开发是啥seo服务外包
  • 做排行的网站南宁seo公司哪家好
  • 开个网站做目前最牛的二级分销模式
  • html企业网站源码下载网络企业推广
  • 做任务网站建设网站seo哪里做的好
  • 建设完网站成功后需要注意什么问题南昌百度推广联系方式
  • 网站开发国外研究状况百度站长快速收录
  • 求职招聘网站建设投标书网络推广教程
  • 个人网页设计html与css代码流程优化四个方法
  • 石家庄英文网站建设双11各大电商平台销售数据
  • 如何制作网址域名武汉网站开发公司seo