C语言SOCKET学习

本文介绍了C语言中使用SOCKET进行网络通信的基础知识,包括两种主要的套接字类型:TCP(SOCK_STREAM)和UDP(SOCK_DGRAM)。TCP提供流格式的套接字,而UDP则是数据包套接字。在传输过程中,需要注意主机字节序(HBO)和网络字节序(NBO)的转换问题。文中还提及了socket通信的基本流程。
摘要由CSDN通过智能技术生成

常见的两种套接字类型

SOCK_STREAM    TCP    流格式套接字

SOCK_DGRAM     UDP    数据包套接字


基础知识:

struct  sockaddr   // 基本不用
{ 
   unsigned short sa_family;   // AF_INET
       
         char sa_data[14];  
}; 
 //  AF_INET是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的;而 AF_UNIX 则是 Unix 系统本地通信。
struct  sockaddr_in  //  大小一样,可以用sockaddr *引用 sockaddr_in
{ 

   short int sin_family;   // AF_INET , 存储在本机上,不需要转变为网络字节顺序

   unsigned short int sin_port;   //端口号,NBO

   struct in_addr  sin_addr;    // IP地址,NBO

   unsigned char sin_zero[8];    //需要memset初始化,一般不使用

}; 

struct in_addr
{ 
   unsigned long s_addr;  //  存放IP地址 
}; 





传输时要考虑字节序的问题,HBO (Host Byte Order) 和CPU有关。NBO(Network Byte Order) 是Big-endian的写法。

例子:如果我们将0x1234abcd写入到以0x0000开始的内存中,则结果为

addr big-endian little-endian    // 以每个字节为单位

0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值