linux应用开发-Socket

linux应用开发-Socket
一 Socket
socket是独立于具体协议的网络编程接口
在osi模型中,主要位于会话层和传输层之间
特点
1 是一个编程接口
2 是一种特殊的文件描述符
3 并不仅限于TCP和IP
4 面向连接和无连接的两种方式

二 socket类型
常用
SOCK_STREAM:按照顺序,可靠的,数据完整,基于字节流,使用TCP传输,使用最多的
SOCK_DGRAM:无连接,固定长度,不可靠,基于UDP传输
不常用
SOCK_SEQPACKET,SOCK_RAW,SOCK_RDM

三 字节序

概念:字节序是指多字节数据在计算机内存中储存或者网络传输时个字节的传输顺序

分类:主机序和网络序

常见字节序:
Little endian 低字节储存在起始地址
BIg endian 高字节储存在起始地址

字节序转换

不同主机的字节序不同,为了统一,引入了网络字节序(大端模式)


主机->网络
u_long ntohl(u_long hostlong)
u_short htons(u_short short)
host to network long

host to network short


网络->主机
u_long ntohl(u_long hostlong)
u_short ntohs(u_short short)
network to host long
network to host short

四 IP地址转换
1 inet_aton
2 inet_addr
3 inet_ntoa

五 获取DNS
根据域名获取ip地址gethostbyname

详情可以参看linux系统的man手册

六 一个案例

aton

技术分享

ntoa

技术分享

gethostbyname

技术分享


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。