socket编程
Posted 五个板栗
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket编程相关的知识,希望对你有一定的参考价值。
一、网络套接字
1.什么是socket:网络通信的函数接口,在里面封装了传输层协议(tcp,udp)。
2.在通信过程中,套接字一定是成对出现的。一个文件描述符指向一个套接字,套接字内部借助两个缓冲区实现,一端的发送缓冲区对应另一端的接受缓冲区。
二、网络字节序
1.小端法:高位存高地址,低位存低地址
2.大端法:高位存低地址,低位存高地址
如何判断是大端存储还是小端存储请看前期博客
3.TCP/IP协议规定,网络数据流应采用大端字节序,即低地址高字节。所以为了网络程序的可移植性,使得代码在大端和小端计算机上编译后都能够正常运行,通常要调用相关的库函数完成网络字节序和主机字节序的转换。如果主机是小端字节序,这些函数将参数做出相应的大小端转换然后返回,如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回。
uint32_t htonl(uint32_t hostlong);
uint16_t htona(uint16_t hostshort);
uint32_t ntohl(unit32_t netlong);
uint16_t ntoha(unit16_t netshort);
h表示host,n表示network,l表示32位长整数,s表示16位短整数
htonl 是将本地转网络(ip)
htons是将本地转网络(port)
ntoh1是将网络转本地(ip)
ntohs是将网络转本地(port)
以上是关于socket编程的主要内容,如果未能解决你的问题,请参考以下文章