Linux下的飞鸽简要设计框架
以下是我从别的blog上转载的, 关于Linux下的飞鸽简要设计框架, 之所以说是Linux下的, 因为代码是Linux下的. 但是, 设计框架将遵循windows版飞鸽传书的协议和框架.数据包格式:
版本号:包编号:用户名:机器名:命令字:附加信息
如 1:2067943:liu :d14:32:hello
以上是一个发送消息的数据包格式,其中32是标示的发消息命令字。附加信息会随着命令字的不同而有所不同,例如,当对方发送了一条消息,你需要返回确认消息时,就需要在附加信息位置加上对方给你发消息时的包编号,只有包编号正确,对方才不会重发。
整个过程都要以以上数据包格式发送数据,因此,将数据包定义为一个结构体
typedef struct cmd
{
Unsigned int verision;
Unsigned int packetno;
Char sendName[];
Char machineName[];
Unsigned int fcommandNo; //命令字
Struct socketaddr_in peer; //这是套接字信息存储结构体
}CMD;
为了将实时的在线用户信息返回,就需要建立一个用户链表,
用户信息存储结构体如下:
Typedef struct info
{
Int no;
Char user[];
Char machine[];
Char IP[];
Struct info *next;
}INFO;
做完以上工作,接下来将进行总体的架构。因为,总体架构不合格,将会直接影响后面工作的进行。通过二次重写,使我深刻认识到,功能函数的重要性,在一个项目中,有时会对某一功能块进行多次调用,但你又不知道具体使那一块,这是跟着项目进度才可准确知道的。因而,为了方便,就要将一个功能封装成一个功能函数,这即有利于程序的可读性,又使得程序的架构变得容易些。
首先,我们需要知道本地的用户名等信息,这是用来填充CMD结构体中的用户名和机器名信息。这里有用到的两个函数实例
#include<pwd.h>
#include<sys/utsname.h>
Struct passwd *pwd;
Struct utsname sysName;
uname(&syaName);
pwd = getpwuid(getuid());
通过上面的操作,已经将用户名存入pwd-->pw_name;机器名存入sysName.nodename中。
在进行聊天或者文件传书时,我们需要用到服务器模式,其实udp 服务器模式
相关文档:
1. HCI层协议概述:
HCI提供一套统一的方法来访问Bluetooth底层。如图所示:
从图上可以看出,Host Controller Interface(HCI) 就是用来沟通Host和Module。Host通常就是PC, Module则是以各种物理连接形式(USB,serial,pc-card等)连接到PC上的bluetooth Dongle。
在Host这一端:application,SDP,L2cap等协议 ......
Linux下scp的用法
http://blog.csdn.net/Channels_net/archive/2009/09/02/4510286.aspx
scp就是secure copy,一个在linux下用来进行远程拷贝文件的命令。
有时我们需要获得远程服务器上的某个文件,该服务器既没有配置ftp服务器,也没有做共享,无法通过常规途径获得文件时,只需要通过简单的scp命令便可达到目的。
一 ......
从Linux 2.6起引入了一套新的驱动管理和注册机制:Platform_device和Platform_driver。
Linux中大部分的设备驱动,都可以使用这套机制, 设备用Platform_device表示,驱动用Platform_driver进行注册。
Linux platform driver机制和传统的device driver 机制(通过driver_register函数进行注册)相比,一个十分明显 ......
之前看了一些关于linux操作系统的教程,比较喜欢将这些东西记录在本子上,现在再将这些东西贴到博客上,和大家交流一下。很多linux高手说到,想要学好linux必须对其目录有个透彻的理解。以下是我总结的一些东西:
与Windows一样,在Linux中也是通过目录来组织文件的。但不同的是,在Linux下只有一个根目录,而不象Win ......