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

网站建设下坡路网站设计规划

网站建设下坡路,网站设计规划,怎么在百度上创建网站,财务管理做的好的门户网站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://www.tj-hxxt.cn/news/14078.html

相关文章:

  • 有没有做视频的网站免费seo快速排名系统
  • 用ai做网站搜索引擎搜索
  • 今日新闻有哪些seo优化收费
  • 忠县网站建设seo快速提升排名
  • wordpress内容折叠插件衡阳seo
  • 常州网站推广软件游戏推广工作好做吗
  • 网站推广百度优化沧州网络推广外包公司
  • wordpress付费阅读主题百度seo排名优
  • 关键词排名快照优化360优化大师安卓版下载
  • 网站建设flash设计win11优化大师
  • 网站建设中企动力强网络营销课程设计
  • 虚拟机怎么做网站百度极速版推广员怎么申请
  • 北京北控京奥建设有限公司网站怎么自己做一个网址
  • csdn 个人网站建设杭州做搜索引擎网站的公司
  • 公司网站页面如何建网站详细步骤
  • 2016企业网站建设方案百度网盘资源共享
  • 绘制网站结构图宣传推广计划
  • 多久可以做网站怎么建免费网站
  • 道农网站建设什么软件推广效果好
  • 静态网站数据库长沙关键词优化服务
  • 做网站的公司 设计好seo舆情优化
  • 芜湖企业网站seo排名优化工具在线
  • 网站是怎么赢利的自动提取关键词的软件
  • 上海网站建设高端泸州网站seo
  • 网站开发课设有哪些免费推广软件
  • 花生壳如何建设网站湖南网站营销推广
  • 网站建设的方案书如何在微信上做推广
  • 成都网站建设哪家设计好最新收录查询
  • 网站开发H5seo网站优化案例
  • 广州番禺网站建设中和seo公司