一沙一世界 一树一菩提
分类: LINUX
2012-08-06 15:52:36
一
本文档是入门级材料,是自己对以前学习的总结,主要帮助理解linux系统中的网络编程概念和架构,自己还准备了4个小实验来加深对编程框架的认识和应用。具体实现并无实际实用意义。但是我认为很有写出来的必要。希望能对大家有所帮助。也希望大家在这个基础上可以根据自己的具体要求进行修改或添砖加瓦来实现自己的大楼。
二
本文档主要是简单的客户端/服务器程序模型介绍,由于程序代码是在操作系统之上,所以只要工具链没问题,内核是2.6,可以直接移植到任何板子上。目前在2410,2440,blackfin537上都验证过。在这里,我们把服务器端程序编译下到板子上,客户端的在pc上编译执行来测试服务器程序。
三
下面介绍下我们要说的东西。
1 网络编程中的分层结构
2 网络编程的几个概念
3 基于TCP协议的数据传输流程
4 具体程序代码有以下几个版本
A 简单的客户端程序和服务器端程序
服务器收到客户端从终端输入的字符传到服务器,服务器按规律处理后发回到客户端,然后客户端显示在标准输出上。
B 可以交互的客户端程序和服务器端程序
功能同A的相同,但是客户端可以多次随意输入,可以与服务器交互,服务器可以连续处理客户端发来的数据。
C 用fork()实现多进程服务器和客户端程序
功能同B,但是服务器可以同时处理最多来自20个客户端的连接,实现典型服务器/客户端交互模式。
D 简单WEB实现
在C功能的基础上,可以在浏览器输入:PORT来访问服务器,简单传输文字和图片。(cgi部分没有实现)
E 在C的实现中涉及到系统调用fork,介绍linux系统中fork和wait的使用,并都有简单实现代码
四 在这个架构上已经实现的具体应用有下面两个:
1 多线程局域网聊天系统,类似QQ,应该有的一比,但是这个是在安装linux的PC上实现,只要开发板上已经移植QT,则少加修改可以移植到板子上。
2 数据采集的web远程显示。是在adi的blackfin上实现。由于是操作系统上的的移植,和板子以及cpu关系不大,移植应该很容易。
五 实验代码在test目录下,B,C,D,E对应实验为目录prac2……prac5。实验中client.c中注意服务器IP要改为你要下载服务器程序的主机或板子的IP。