嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-TCP编程(物联技术666)

这篇具有很好参考价值的文章主要介绍了嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-TCP编程(物联技术666)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

点赞+关注,功德无量。更多配套资料,欢迎私信。

百度网盘 请输入提取码百度网盘为您提供文件的网络备份、同步和分享服务。空间大、速度快、安全稳固,支持教育网加速,支持手机端。注册使用百度网盘即可享受免费存储空间https://pan.baidu.com/s/1F6BR6uTANKKcNnoaCUAZYA?pwd=1688

上午:WebServer编程    

下午:BOA介绍及其移植

教学内容:

1WebServer编程:

利用IE链接服务器的时候,会发送一个报文,报文格式如下:

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-TCP编程(物联技术666),嵌入式培训笔记,网络,笔记,linux,运维,服务器,开发语言,tcp/ip

其中GET是握手,index.html是打开文件名 HTTP/1.1是协议名

对于网络webserver,主要是利用,linux虚拟机下,

创建一个TCP主机服务器;

       1)、当有客户端(IE)链接的时候,服务器响应。

       2)、主程序在链接成功后,在创建线程或者进程去处理链接的队列,同时服务器返回到accept状态继续下一个链接。(如果创建的是线程,必须使用线程函数)

       3)、线程或进程中的处理函数,主要解决通过接收的头文,解出文件名,如果不存在,发送不存在的头文;存在就发送成功的头文同时read文件内容,通过套接字发送过去(发送给IE

---------------------------

成功头文:

------------

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-TCP编程(物联技术666),嵌入式培训笔记,网络,笔记,linux,运维,服务器,开发语言,tcp/ip

--------------------------

---------------------------

失败头文:

------------

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-TCP编程(物联技术666),嵌入式培训笔记,网络,笔记,linux,运维,服务器,开发语言,tcp/ip

--------------------------

2BOA 服务器

       是一个小巧高效的web服务器,是一个运行于unixlinux下的,支持CGI的、适合于嵌入式系统的单任务的http服务器,源代码开放、性能高。   Boa   是一种非常小巧的Web服务器,其可执行代码只有大约60KB左右。作为一种单任务Web服务器,Boa只能依次完成用户的请求,而不会fork出新的进程来处理并发连接请求。但Boa支持CGI,能够为CGI程序fork出一个进程来执行。Boa的设计目标是速度和安全。

3boa服务器在虚拟机的移植

> 编译boa 程序

1. www.boa.org 下载boa-0.94.13-src.tar.gz

2. tar zxvf boa-0.94.13-src.tar.gz 解压

3. cd boa-0.94.13-src

4. cd ./src

5. ./configure

6. make

> 修改配置文件boa.conf

0. 编译完成之后cd .. 返回boa-0.94.13-src 目录

1. 建立/etc/boa 目录, 并复制boa.conf /etc/boa 目录下

mkdir /etc/boa

cp boa.conf /etc/boa

2. 进入/etc/boa 目录打开并修改其中的boa.conf 文件

cd /etc/boa

vi boa.conf

以下操作均对/etc/boa 下的boa.conf 进行

3. 修改User nobody User 0 ; 修改Group nogroup Group 0

4. 修改ErrorLog 选项和AccessLog 选项为:

ErrorLog /var/log/boa/error_log

AccessLog /var/log/boa/access_log

5. 设置html 文件目录: DocumentRoot /var/www

6. 设置默认首页: DirectoryIndex index.html

7. 设置ScriptAlias 选项为:

ScriptAlias /cgi-bin/ /var/www/cgi-bin/

> 根据第二步设置建立相关文件夹并放入文件:

1. 根据(第二.4 )的设置建立/var/log/boa 文件夹和相应文件:

mkdir /var/log/boa

touch /var/log/boa/access_log

touch /var/log/boa/error_log

2. 根据(第二.5 )的设置建立/var/www 文件夹(如果存在此文件则不用创建), 并在

此目录下存放html 文件(包括index.html 文件)

3. 根据(第二.7 )的设置建立/var/www/cgi-bin 文件夹

> OK,在编写boa-0.94.13-src/src 文件夹下运行./boa 程序,启动boa 服务器。

windows 下通过http://192.168.222.66(IP 为虚拟机的IP 地址)这种形式

访问,进行测试。

4boa移植在开发板上

1>. (第一.3 )操作完成之后,修改Makefile 文件:

:

CC = gcc

CPP = gcc -E

该为:

CC = arm-linux-gcc

CPP = arm-linux-gcc -E

make 即可。

2>. 拷贝PC /etc/mime.types 文件到开发板/etc 目录下

或者将boa.conf 文件中

MimeTypes /etc/mime.types

修改为:

MimeTypes /dev/null

boa 配置相关目录:

1. boa.conf 的存放目录:

默认boa.conf 是在/etc/boa.conf 目录的, boa 运行时会自动去找

/etc/bon.conf 目录。

这个设定是在define.h 文件中定义的,可在编译之前进行修改。

2. log 目录: 分为Errorlog AccessLog 两个目录,可在boa.conf 中修改。

:

ErrorLog /var/log/boa/error_log

AccessLog /var/log/boa/access_log

3. html 文件存放目录, 可在boa.conf 文件中修改。

: DocumentRoot /var/www

4. cgi 脚本存放目录, 可在boa.conf 文件中修改。

: ScriptAlias /cgi-bin/ /var/www/cgi-bin

5. mime.types 存放目录, 可在boa.conf 文件中修改。

: MimeTypes /etc/mime.types

5、字节序

字节序是一个处理器的架构特性

小端格式:将低位字节数据存储在低地址

大端格式:将高位字节数据存储在低地址

网络协议指定了通讯字节序--大端

字节序转换函数:

uint32_t htonl(uint32_t hostint32);

uint16_t htons(uint16_t hostint16);

以上返回网络字节序

uint32_t ntohl(uint32_t netint32);

uint16_t ntohs(uint16_t netint16);

以上返回主机字节序

#include <arpa/inet.h>

以上都是无符号整型之间的转换,即大端和小端之间的转换。

6到点分十进制数串:

在网络传输中,IP是以一个32位无符号整型传输,而实际的IP以字符型表示,比如:192.168.222.66;

int inet_pton(int family, const char *strptr,void *addrptr);

family:什么协议,是inet就是AF_INET;

strptr:存IP的字符地址或指针

addrptr:字符长度的指针

􀂾成功返回1,否则返回0

const char *inet_ntop(int family,const void *addrptr,char *strptr,size_t len);

family:什么协议,是inet就是AF_INET;

addrptr:存网络(是无符号整型,一般是结构体中的&client_addr.sin_addr)IP的地址

strptr:存IP的字符地址或指针

len:存字符长度

#define INET_ADDRSTRLEN 16

#define INET6_ADDRSTRLEN 46 //for ipv6

7TCP通信的过程

嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-TCP编程(物联技术666),嵌入式培训笔记,网络,笔记,linux,运维,服务器,开发语言,tcp/ip

TCP的通信是在三次握手协议之后,服务器必须经过创建套接字、绑定套接字、监听套接字和接受套接字几个步骤。

对于通信双方可以使用系统调用readwrite;也可以使用send和recv

#include <sys/socket.h>

ssize_t send(int sockfd, const void *buf,size_t nbytes, int flags);

ssize_t recv(int sockfd, void *buf,size_t nbytes, int flags);

返回读到或写到的字节数

sockfd:联络的套接字

buf:发送(存储)的缓存数据地址

nbytes:发送(存储)字节大小

flags:阻塞还是不阻塞等宏作用,一般为0阻塞

8、关闭套接字

对于TCP通信来说,要先关闭客户端才能关闭服务器

关闭使用close()函数。文章来源地址https://www.toymoban.com/news/detail-800967.html

到了这里,关于嵌入式培训机构四个月实训课程笔记(完整版)-Linux网络编程第二天-TCP编程(物联技术666)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包