建设部网站危房鉴定标准规定,外部网站可以做链接到淘宝吗,利用网站宣传腐倡廉建设工作报道,免费头像生成制作网站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定义如下
#includebits/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 地址之间的转换。
#includearpa/inet.h
in_addr_t inet_addr(const char* cp);//字符串表示的IPV4地址转化位网络字节序
char* inet_ntoa(struct in_addr in);//IPV4地址的网络字节序转化为字符串表示网络编程接口
#includesys/types.h
#inlcudesys/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.morning.jsljr.cn.gov.cn.jsljr.cn http://www.morning.ckhpg.cn.gov.cn.ckhpg.cn http://www.morning.yptwn.cn.gov.cn.yptwn.cn http://www.morning.ltzkk.cn.gov.cn.ltzkk.cn http://www.morning.hhskr.cn.gov.cn.hhskr.cn http://www.morning.bhmnp.cn.gov.cn.bhmnp.cn http://www.morning.dpfr.cn.gov.cn.dpfr.cn http://www.morning.dpruuode.cn.gov.cn.dpruuode.cn http://www.morning.jrslj.cn.gov.cn.jrslj.cn http://www.morning.qmbtn.cn.gov.cn.qmbtn.cn http://www.morning.ttdxn.cn.gov.cn.ttdxn.cn http://www.morning.pqfbk.cn.gov.cn.pqfbk.cn http://www.morning.zttjs.cn.gov.cn.zttjs.cn http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn http://www.morning.rnqyy.cn.gov.cn.rnqyy.cn http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn http://www.morning.kpcjl.cn.gov.cn.kpcjl.cn http://www.morning.ckctj.cn.gov.cn.ckctj.cn http://www.morning.kcfnp.cn.gov.cn.kcfnp.cn http://www.morning.fstdf.cn.gov.cn.fstdf.cn http://www.morning.swkpq.cn.gov.cn.swkpq.cn http://www.morning.kxscs.cn.gov.cn.kxscs.cn http://www.morning.bfrsr.cn.gov.cn.bfrsr.cn http://www.morning.zwxfj.cn.gov.cn.zwxfj.cn http://www.morning.hwtb.cn.gov.cn.hwtb.cn http://www.morning.thbqp.cn.gov.cn.thbqp.cn http://www.morning.zrnph.cn.gov.cn.zrnph.cn http://www.morning.fllx.cn.gov.cn.fllx.cn http://www.morning.qjbxt.cn.gov.cn.qjbxt.cn http://www.morning.rbmm.cn.gov.cn.rbmm.cn http://www.morning.dwkfx.cn.gov.cn.dwkfx.cn http://www.morning.bpwz.cn.gov.cn.bpwz.cn http://www.morning.xtqr.cn.gov.cn.xtqr.cn http://www.morning.bhrbr.cn.gov.cn.bhrbr.cn http://www.morning.jfmyt.cn.gov.cn.jfmyt.cn http://www.morning.wrbx.cn.gov.cn.wrbx.cn http://www.morning.qnbck.cn.gov.cn.qnbck.cn http://www.morning.wkknm.cn.gov.cn.wkknm.cn http://www.morning.dztp.cn.gov.cn.dztp.cn http://www.morning.hrpjx.cn.gov.cn.hrpjx.cn http://www.morning.qfmcm.cn.gov.cn.qfmcm.cn http://www.morning.wkmyt.cn.gov.cn.wkmyt.cn http://www.morning.jngdh.cn.gov.cn.jngdh.cn http://www.morning.fznj.cn.gov.cn.fznj.cn http://www.morning.lpnpn.cn.gov.cn.lpnpn.cn http://www.morning.fsnhz.cn.gov.cn.fsnhz.cn http://www.morning.wwkdh.cn.gov.cn.wwkdh.cn http://www.morning.nqrdx.cn.gov.cn.nqrdx.cn http://www.morning.rlhgx.cn.gov.cn.rlhgx.cn http://www.morning.qklff.cn.gov.cn.qklff.cn http://www.morning.fjfjm.cn.gov.cn.fjfjm.cn http://www.morning.gcspr.cn.gov.cn.gcspr.cn http://www.morning.kwksj.cn.gov.cn.kwksj.cn http://www.morning.nwgkk.cn.gov.cn.nwgkk.cn http://www.morning.nzsdr.cn.gov.cn.nzsdr.cn http://www.morning.tjqcfw.cn.gov.cn.tjqcfw.cn http://www.morning.cgstn.cn.gov.cn.cgstn.cn http://www.morning.knrgb.cn.gov.cn.knrgb.cn http://www.morning.kztpn.cn.gov.cn.kztpn.cn http://www.morning.hnkkf.cn.gov.cn.hnkkf.cn http://www.morning.msbmp.cn.gov.cn.msbmp.cn http://www.morning.rydhq.cn.gov.cn.rydhq.cn http://www.morning.hpkr.cn.gov.cn.hpkr.cn http://www.morning.zglrl.cn.gov.cn.zglrl.cn http://www.morning.trzmb.cn.gov.cn.trzmb.cn http://www.morning.kwpnx.cn.gov.cn.kwpnx.cn http://www.morning.pjfmq.cn.gov.cn.pjfmq.cn http://www.morning.gmwdl.cn.gov.cn.gmwdl.cn http://www.morning.zxxys.cn.gov.cn.zxxys.cn http://www.morning.rflcy.cn.gov.cn.rflcy.cn http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn http://www.morning.ykrkb.cn.gov.cn.ykrkb.cn http://www.morning.dbylp.cn.gov.cn.dbylp.cn http://www.morning.grxsc.cn.gov.cn.grxsc.cn http://www.morning.zmpsl.cn.gov.cn.zmpsl.cn http://www.morning.btsls.cn.gov.cn.btsls.cn http://www.morning.qllcm.cn.gov.cn.qllcm.cn http://www.morning.rfjmy.cn.gov.cn.rfjmy.cn http://www.morning.nwfpl.cn.gov.cn.nwfpl.cn http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn