日报表第十天

项目名称

【苏嵌实训-嵌入式 linux C 第 10 天】

今日进度以及任务

对嵌入式linux网络编程的学习,以及对实训项目功能实现注意要点的学习,以便接下来的答辩

 

本日任务完成情况

(详细说明本日任务是否按计划完成,开发的量)

1.socket的概述

 

Linux中的网络编程是通过socket接口来进行的,它也是一种文件描述符。通过它不仅可以在本地机器上实现进程间的通信,而且通过网络能够在不同的机器上的进程之间进行通信。socket也有一个类似打开文件的函数调用,该函数返回一个整型的socket描述符,随后的连接建立等操作都是通过socket来实现的。

 

socket类型常见有以下三种:

 

流式socket(SOCK_STREAM):流式套接字提供可靠的、面向连接的通信流;它使用TCP协议,保证了数据的正确性和顺序性。

数据报socket(SOCK_DGRAM):数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,而且不保证是可靠、无差错的。使用数据报协议UDP。

原始socket:允许对底层协议进行直接访问,功能强大但使用不便,主要用于一些协议的开发。

 

2、地址及顺序处理

1)地址结构相关处理

一种常用的用于保存网络地址的数据结构sockaddr_in,其结构如下:

 

[csharp] view plaincopy

 

struct sockaddr_in  

{  

      short int sin_family; /*地址族*/  

      unsigned short int sin_port; /*端口号*/  

      struct in_addr sin_addr; /*IP地址*/  

      unsigned char sin_zero[8]; /*填充0*/  

};  

该结构sin_family字段可选常见值:

 

AF_INET:IPv4协议

 

AF_INET6:IPv6协议

 

AF_LOCAL:UNIX域协议

 

AF_LINK:链路地址协议

 

AF_KEY:密钥套接字

 

2)数据存储优先顺序

计算机数据存储有两种字节优先顺序:高位字节优先(大端模式)和低位字节优先(小段模式)。Internet上以高位字节优先的顺序在网络传输,而PC机通常采用小端模式,因此有时候需要对两个字节存储优先顺序进行转换。用到了4个函数:htons()、ntohs()、htonl()和ntohl()。h代表host,n代表network,s代表short,l代表long。通常16位的IP端口号用s,而IP地址用l。

 

3)地址格式转换

IP地址通常由数字加点(192.168.0.1)的形式表示,而在struct in_addr中使用的IP地址是由32位整数表示,为了转换可以使用下面三个函数:

 

[csharp] view plaincopy

 

int inet_aton(const char *cp,struct in_addr *inp);  

char *inet_ntoa(struct in_addr in);  

in_addr_t inet_addr(const char *cp);  

其中inet_aton将a.b.c.d形式的IP转换为32位的IP,存储在inp指针里面;inet_ntoa是将32位IP转换为a.b.c.d的格式;inet_addr将一个点分十进制的IP转换成一个长整数型数。

 

4)名字地址转换

通常,人们在使用过程中不愿记忆冗长的IP地址,因此,使用主机名是很好的

本日开发中出现的问题汇总

使用函数时

对于数据存储优先顺序

网络字节序和主机字节序的转化

 

对于网络字节序:

按从高到低的顺序存储,在网络上使用统一的网络字节顺序(大端模式)

 

对于主机字节顺序:

就是数据的存储顺序是由cpu(就是主机的cpu)决定的,而与操作系统无关

本日未解决问题

对编程语言还有很多不足

本日开发收获

总结性的复习了一遍嵌入式linux的基本知识,同时也算半只脚进去嵌入式的门

其他

通过这十来天的学习,初步学习了嵌入式开发的知识,对后面的学习也更有帮助

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值