树莓派自带无线网卡MAC地址:b8:27:eb:a2:f6:52
1、先安装好驱动(一般是.ko格式文件)8821au.ko、编译生成数据采集程序:getData
2、开机加载驱动
在文件/etc/rc.local中添加下列行:sudo insmod /home/pi/8821au.ko
3、开机自启动采集程序
在文件/etc/rc.local中添加下列行:
cd /home/pi/UAV/get_data/
./getData
4、设置wlan1(自己安装的无线网卡,树莓派自动的网卡是wlan0)连接到网络,在/etc/network//interfaces中添加如下内容:
auto wlan1 #网卡wlan1随系统自启动
iface wlan1 inet dhcp #设置wlan1无线网卡采用dhcp方式分配IP地址
wpa-ssid “<wifiID>”
wpa-psk "<wifi密码>"
或者如下方式配置静态IP地址:
auto wlan1 #网卡wlan1随系统自启动
iface wlan1 inet static #设置wlan1无线网卡采用dhcp方式分配IP地址
address 192.168.1.55 #可以是合理的IP地址
netmask 255.255.255.0
gateway 192.168.1.1
wpa-ssid “<wifiID>”
wpa-psk "<wifi密码>"
参考:https://i.cmgine.net/archives/11053.html
http://blog.csdn.net/c80486/article/details/8545307
补充:
1、/etc/rc.local与/etc/init.d/的区别:
参考:http://www.cnblogs.com/gzggyy/archive/2012/08/07/2626574.html
/etc/rc.local是用户自己设置的开机自动执行的shell指令
/etc/init.d/是脚本目录,是一些服务的启动脚本,执行这里面的脚本可以启动、停止和重启这些服务,如:
/etc/init.d/networking restart可以重启网卡让新配置生效
2、iwconfig和ifconfig的区别:
iwconfig:对无线网络的配置工具
ifconfig:用来显示或者设置网络设备
3、/etc/network/interfaces和/etc/wpa_supplicant/wpa_supplicant_conf的区别:
参考:https://i.cmgine.net/archives/11053.html
4、socket缓冲区大小设置:
发送缓冲区和接收缓冲区的相关文件:
参考:http://blog.csdn.net/ziliangxiao/article/details/24260949
设置方法:http://blog.csdn.net/yunuobuyoi/article/details/8815685
ip层的处理情况可以这样理解:
1 将上层数据封装成一个ip数据报文,如果数据报文的数据部分大于【2^16-1-20】,返回错误
2 如果ip数据报文段大于MTU(这是由数据链路层限制的,比如以太网的MTU=1500),则将该ip数据报文段进行分片处理,分成多个ip数据报文段
UDP socket编程:
因为udp包头有2个byte用于记录包体长度. 2个byte可表示最大值为: 2^16-1=64K-1=65535
udp包头占8字节, ip包头占20字节, 65535-28 = 65507
如果要发送的udp报文大于65507,需要在应用层由开发者自己分片发送。 分片的粒度最大65507字节,系统的sendto函数是不支持大于65507字节的单包发送的.
TCP socket编程:
TCP包的长度为2^16-1-20-20(TCP包头占20个字节)=65495,但是TCP协议会自动分片发送。关键用setsockopt函数设置缓冲区的大小
缓冲区大小受3个因素影响:
(1)/proc/sys/net/core/rmem_max
/proc/sys/net/core/wmem_max
/proc/sys/net/core/rmem_default
/proc/sys/net/core/wmem_default
(2)
/proc/sys/net/ipv4/tcp_rmem
/proc/sys/net/ipv4/tcp_wmem
(3)setsockopt函数
i.若不调用setsockopt函数,则默认按照 /proc/sys/net/ipv4/tcp_rmem/proc/sys/net/ipv4/tcp_wmem中的配置来设置缓冲区大小
ii.若调用setsockopt函数,则/proc/sys/net/ipv4/中的配置文件失效。也不会无限增大缓冲区,缓冲区最大可以设置为 /proc/sys/net/core/wmem_max 和 rmem_max中的值。
因此在改变缓冲区大小的时候需要同时用setsockopt函数并改变/proc/sys/net/core/wmem_max 和 rmem_max中的值。