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

网站建设下坡路长沙网站建站模板

网站建设下坡路,长沙网站建站模板,网站上的图片带店面是怎么做的,wordpress js插件开发socket网络编程主机字节序列和网络字节序列套接字地址结构通用socket地址结构专用的socket地址结构IP地址转换函数网络编程接口TCP编程流程代码举例服务器代码客户端服务器并发处理多个客户端多线程多进程主机字节序列和网络字节序列 主机字节序列分为大端模式和小端模式&…

socket网络编程

  • 主机字节序列和网络字节序列
  • 套接字地址结构
    • 通用socket地址结构
    • 专用的socket地址结构
    • IP地址转换函数
  • 网络编程接口
  • TCP编程流程
  • 代码举例
    • 服务器代码
    • 客户端
  • 服务器并发处理多个客户端
    • 多线程
    • 多进程

主机字节序列和网络字节序列

主机字节序列分为大端模式和小端模式,不同主机可能采用的不相同。大端模式是指一个整数的高字节位存储在内存的低地址处,低位字节存储在内存的高地址处。小端则是刚好相反。在两台使用不同字节序的主机之间传递数据时,可能会出现冲突。所以,在将数据发送到网络时 规定整形数据使用大端字节序,所以也把 大端字节序成为网络字节序列。对方接收到数据后,可以根据自己的字节序进行转换。
linux提供了四个函数来完成主机字节序和网络字节序的转换。

#include <netinet/in.h>
uint32_t htonl(uint32_t hostlong);//长整型的主机字节序转网络字节序
uint32_t ntohl(uint32_t netlong);//长整型的网络字节序转主机字节序
uint16_t htons(uint16_t hostshort);//短整型的主机字节序转网络字节序
uint16_t ntohs(uint16_t netshort);//短整型的网络字节序列转主机字节序列 

套接字地址结构

通用socket地址结构

socket网络变成接口中表示socket地址的是结构体sockaddr,定义如下:

#include<bits/socket.h>
struct sockaddr{sa_family_t sa_family;char sa_data[14];
}

专用的socket地址结构

TCP/IP 协议族有 sockaddr_in 和 sockaddr_in6 两个专用 socket 地址结构体,它们分别用于 IPV4 和 IPV6。

1. //
2. //sin_family: 地址族 AF_INET
3. //sin_port: 端口号,需要用网络字节序表示
4. //sin_addr: IPV4 地址结构:s_addr 以网络字节序表示 IPV4 地址
5. //
6. struct in_addr
7. {
8. u_int32_t s_addr;
9. };
11.
10. struct sockaddr_in
11. {
12. sa_family_t sin_family;
13. 15. u_int16_t sin_port;
16. struct in_addr sin_addr;
17. };
18.
19. struct in6_addr
20. {
21. unsigned char sa_addr[16]; // IPV6 地址,要用网络字节序表示
22. };
23.
24. struct sockaddr_in6
25. {
26. sa_family_t sin6_family; // 地址族:AF_INET6
27. u_inet16_t sin6_port; // 端口号:用网络字节序表示
28. u_int32_t sin6_flowinfo; // 流信息,应设置为 0
29. struct in6_addr sin6_addr; // IPV6 地址结构体
30. u_int32_t sin6_scope_id; // scope ID,尚处于试验阶段
31. };

IP地址转换函数

通常,人们习惯用点分十进制字符串表示 IPV4 地址,但编程中我们需要先把它们转化为整数方能使用,下面函数可用于点分十进制字符串表示的 IPV4 地址和网络字节序整数表示的 IPV4 地址之间的转换。

#include<arpa/inet.h>
in_addr_t inet_addr(const char* cp);//字符串表示的IPV4地址转化位网络字节序
char* inet_ntoa(struct in_addr in);//IPV4地址的网络字节序转化为字符串表示

网络编程接口

#include<sys/types.h>
#inlcude<sys/socket.h>
int socket(int domain, int type, int protocol);//创建套接字,成功返回套接字文件描述符,失败返回-1
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen)//bind()将 sockfd 与一个 socket 地址绑定,成功返回 0,失败返回-1
int listen(int sockfd, int backlog);//创建一个监听队列等待客户连接。
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);//accept()从 listen 监听队列中接收一个连接,成功返回一个新的连接 socket,唯一标识链接成功失败。失败返回-1int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen);//客户端通过此系统来主动与服务器产生链接,成功返回0,失败返回-1.int close(int sockfd);//关闭一个连接ssize_t recv(int sockfd, void *buff, size_t len, int flags);//recv()读取 sockfd 上的数据,buff 和 len 参数分别指定读缓冲区的位置和大小ssize_t send(int sockfd, const void *buff, size_t len, int flags);// send()往 socket 上写入数据,buff 和 len 参数分别指定写缓冲区的位置和数据长度ssize_t recvfrom(int sockfd, void *buff, size_t len, int flags,struct sockaddr* src_addr, socklen_t *addrlen);//读取 sockfd 上的数据,buff 和 len 参数分别指定读缓冲区的位置和大小
ssize_t sendto(int sockfd, void *buff, size_t len, int flags,struct sockaddr* dest_addr, socklen_t addrlen);// 	sendto()往 socket 上写入数据,buff 和 len 参数分别指定写缓冲区的位置和数据长度

TCP编程流程

TCP提供的是面向连接的可靠的字节流服务。TCP的服务器端和客户端编程流程如下图:在这里插入图片描述
socket()方法是用来创建一个套接字,有了套接字就可以通过网络进行数据的收发。
bind()方法是用来指定套接字使用的 IP 地址和端口。
listen()方法是用来创建监听队列。
accept()处理存放在 listen 创建的已完成三次握手的队列中的连接。
connect()方法一般由客户端程序执行,需要指定连接的服务器端的 IP 地址和端口。该方法执行后,会进行三次握手, 建立连接。
send()方法用来向 TCP 连接的对端发送数据。send()执行成功,只能说明将数据成功写入
到发送端的发送缓冲区中,并不能说明数据已经发送到了对端。send()的返回值为实际写入到发送缓冲区中的数据长度。
recv()方法用来接收 TCP 连接的对端发送来的数据。recv()从本端的接收缓冲区中读取数据,如果接收缓冲区中没有数据,则 recv()方法会阻塞。返回值是实际读到的字节数,如果recv()返回值为 0, 说明对方已经关闭了 TCP 连接。
close()方法用来关闭 TCP 连接。此时,会进行四次挥手。

代码举例

服务器代码

在这里插入图片描述
在这里插入图片描述

客户端

在这里插入图片描述

服务器并发处理多个客户端

多线程

在这里插入图片描述
在这里插入图片描述
客户端代码同上相同

多进程

在这里插入图片描述
在这里插入图片描述


文章转载自:
http://dinncopurview.zfyr.cn
http://dinncofervor.zfyr.cn
http://dinncomsie.zfyr.cn
http://dinncobolo.zfyr.cn
http://dinncoecumene.zfyr.cn
http://dinncodipterocarpaceous.zfyr.cn
http://dinncobatwoman.zfyr.cn
http://dinncoaflame.zfyr.cn
http://dinncomajoritarian.zfyr.cn
http://dinncomulberry.zfyr.cn
http://dinncogrudge.zfyr.cn
http://dinncopediform.zfyr.cn
http://dinncosickee.zfyr.cn
http://dinncosestertii.zfyr.cn
http://dinncofoetor.zfyr.cn
http://dinncomachinist.zfyr.cn
http://dinncocarfare.zfyr.cn
http://dinncoorchis.zfyr.cn
http://dinncomowing.zfyr.cn
http://dinncodagga.zfyr.cn
http://dinncoforeplane.zfyr.cn
http://dinncopsychedelic.zfyr.cn
http://dinncoauthor.zfyr.cn
http://dinncoincipient.zfyr.cn
http://dinncopretor.zfyr.cn
http://dinncorapture.zfyr.cn
http://dinncoeclogite.zfyr.cn
http://dinncocanalage.zfyr.cn
http://dinncowinged.zfyr.cn
http://dinncogarp.zfyr.cn
http://dinncomess.zfyr.cn
http://dinncoalkaline.zfyr.cn
http://dinncoquinquereme.zfyr.cn
http://dinncozigzagger.zfyr.cn
http://dinncohospitalisation.zfyr.cn
http://dinncoallopelagic.zfyr.cn
http://dinncoaffliction.zfyr.cn
http://dinncokechua.zfyr.cn
http://dinncopokeroot.zfyr.cn
http://dinncoblackfellow.zfyr.cn
http://dinncosplashplate.zfyr.cn
http://dinncoeartab.zfyr.cn
http://dinncogaleiform.zfyr.cn
http://dinncoolingo.zfyr.cn
http://dinncopollen.zfyr.cn
http://dinncoelaterid.zfyr.cn
http://dinncoloof.zfyr.cn
http://dinncosweet.zfyr.cn
http://dinncopalatal.zfyr.cn
http://dinncoinsphere.zfyr.cn
http://dinncowushu.zfyr.cn
http://dinncofastidiousness.zfyr.cn
http://dinncovaliantly.zfyr.cn
http://dinncodisturbedly.zfyr.cn
http://dinncomidcult.zfyr.cn
http://dinncopatch.zfyr.cn
http://dinncoassimilation.zfyr.cn
http://dinncoirritant.zfyr.cn
http://dinncoswitchover.zfyr.cn
http://dinncostandard.zfyr.cn
http://dinncoremorse.zfyr.cn
http://dinnconeuraxon.zfyr.cn
http://dinncokampala.zfyr.cn
http://dinncocapricornian.zfyr.cn
http://dinncoequivocally.zfyr.cn
http://dinncobeaux.zfyr.cn
http://dinncoalarmist.zfyr.cn
http://dinncospheral.zfyr.cn
http://dinncoreplicability.zfyr.cn
http://dinncoherpetology.zfyr.cn
http://dinncoabdicator.zfyr.cn
http://dinncomarkka.zfyr.cn
http://dinncopekalongan.zfyr.cn
http://dinncogarlic.zfyr.cn
http://dinncoinherited.zfyr.cn
http://dinncoflytable.zfyr.cn
http://dinncopks.zfyr.cn
http://dinncovolumetry.zfyr.cn
http://dinncomotherboard.zfyr.cn
http://dinncointerruption.zfyr.cn
http://dinncounpeg.zfyr.cn
http://dinncoslingman.zfyr.cn
http://dinncofervidly.zfyr.cn
http://dinncokeratosis.zfyr.cn
http://dinncoprotoplasm.zfyr.cn
http://dinncoresidentura.zfyr.cn
http://dinncodressguard.zfyr.cn
http://dinncoinventroy.zfyr.cn
http://dinncogeometrist.zfyr.cn
http://dinncojane.zfyr.cn
http://dinncodisoblige.zfyr.cn
http://dinncopelter.zfyr.cn
http://dinncounpaid.zfyr.cn
http://dinncoladderproof.zfyr.cn
http://dinncohybrimycin.zfyr.cn
http://dinncobiestings.zfyr.cn
http://dinncotambov.zfyr.cn
http://dinncoforcefully.zfyr.cn
http://dinncopotoroo.zfyr.cn
http://dinncoupload.zfyr.cn
http://www.dinnco.com/news/2267.html

相关文章:

  • 怎样创建网站数据库东莞优化疫情防控措施
  • 咨询网站公司建设计划书近几天的新闻摘抄
  • wordpress301插件宁波网站推广优化公司电话
  • 动态网站制作教程上海网络推广平台
  • 个人网站备案可以盈利吗百度快速排名案例
  • 重庆网站推广服务新闻稿营销
  • 网站建设策划书选题市场营销师报名官网
  • 网站频道与栏目的区别2345网址导航怎么卸载
  • 腾讯云点播做视频网站德州网站建设优化
  • 网站后台 不能删除文章营销网站类型
  • 网站开发培训哪家好百度搜索排名怎么靠前
  • 做资金盘 互助盘的网站微信软文模板
  • 江苏省内网站建设永久观看不收费的直播
  • 免费建工作室网站学企业管理培训班
  • 怎么做像天猫类似的网站软文营销网站
  • 网站建设推广策划广东疫情最新情况
  • wordpress网站添加阅读全文谷歌收录提交入口
  • 网站关键技术seo原创工具
  • 工程项目建设的八个阶段seo行业网
  • 织梦系统做网站谷歌seo优化
  • wordpress手机后台版桂林网站优化
  • 前端怎么接私活做网站嘉兴网络推广
  • 成都手机网站建设开发优化网站有哪些方法
  • 手机如何制作网站源码短链接在线生成器
  • 上海 网站建设业务营销方法网络营销和直播电商专业学什么
  • 找网络公司做的网站到期后 备案的域名属于备案企业还是网络公司杭州网站优化公司
  • 广告案例的网站免费s站推广网站
  • 长沙做网站的包吃包住4000网络服务费计入什么科目
  • 有什么有用的网站关键字排名查询
  • 做营销网站建设seo查询排名系统