易截截图软件、单文件、免安装、纯绿色、仅160KB

实战Linux Bluetooth编程(六) L2CAP编程实例

例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
 如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identifier等。
以下是一个发送signaling Command以及接收Response的简单例子:
int main(int argc, char** argv)
{
 int l2_sck = 0;
 int iRel  = 0;
 struct sockaddr_l2 local_l2_addr;
 struct sockaddr_l2 remote_l2_addr;
 char str[24] ={0};
 int len = 0;
 int size = 50;
 char* send_buf;
 char* recv_buf;
 int i = 0;
 int id = 1; //不要为0
 
 send_buf = malloc(L2CAP_CMD_HDR_SIZE + size);
 recv_buf = malloc(L2CAP_CMD_HDR_SIZE + size);
 
 if(argc < 2)
 {
  printf("\n%s <bdaddr>\n", argv[0]);
  exit(0);
 }
 // create l2cap raw socket
 l2_sck = socket(PF_BLUETOOTH, SOCK_RAW, BTPROTO_L2CAP); //创建L2CAP protocol的RAW Packet
 if(l2_sck < 0)
 {
  perror("\nsocket:");
  return -1;
 }
 //bind
 memset(&local_l2_addr, 0, sizeof(struct sockaddr_l2));
 local_l2_addr.l2_family = PF_BLUETOOTH;
 bacpy(&local_l2_addr.l2_bdaddr , BDADDR_ANY);
 iRel = bind(l2_sck, (struct sockaddr*) &local_l2_addr, sizeof(struct sockaddr_l2));
 if(iRel < 0)
 {
  perror("\nbind()");
  exit(0);
 }
 //connect
 memset(&remote_l2_addr, 0 , sizeof(struct sockaddr_l2));
 remote_l2_addr.l2_family = PF_BLUETOOTH;
 //printf("\nConnect to %s\n", argv[1]);
 str2ba(argv[1], &remote_l2_addr.l2_bdaddr);
 iRel = connect(l2_sck, (struct sockaddr*)&remote_l2_addr, sizeof(struct sockaddr_l2));
 if(iRel < 0)
 {
  perror("\nconnect()");
  exit(0);
 }
 //get local bda


相关文档:

Linux 0.12内核

在应用程序开发时,也经常需要如下的定时器. 这里对定时器做了一个优化,就是在插入队列中时进行了一次排序,使得检测时不需要遍历整个链表,只需把排在前面的几个到时的任务取出来就可以了。
static struct timer_list {
     long jiffies;
     void (*fn)();
   ......

Linux在VMware虚拟机中的网络设置

这个问题搞了很长时间,也在网上查了很多东西,现在慢慢的来整理一下
vmware安装好以后,会自动添加两张网卡(vmnet1和vmnet8),整个机器的结构就可以抽象成:虚拟机系统(虚拟网卡vmnet0)――(vmnet1 vmnet8)――实际系统(网卡)。
1.Vmware的网卡设置
    (1)Bridged(桥接)方式
  &n ......

[转贴]Linux文件查找命令find,xargs详述

总结:
zhy2111314
来自:
LinuxSir.Org
整理:
北南南北
摘要:
本文是find 命令的详细说明,可贵的是针对参数举了很多的实例,大量的例证,让初学者更为容易理解;本文是zhyfly兄贴在论坛中;我对本文进行了再次整理,为方便大家阅读;
目录
版权声明
前言:关于find命令
一、find 命令格式
1、find命令的一 ......

linux逻辑卷管理 (LVM)


什么是 LVM
LVM 是逻辑盘卷管理(Logical Volume Manager)的简称,它是 Linux 环境下对磁盘分区进行管理的一种机制,LVM
是建立在硬盘和分区之上的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,从而提高磁盘分区管理的灵活性。通过 LVM
系统管理员可以轻松管理磁盘分区,如:将若干个磁盘分区连接为一个整块的卷组 ......

linux里添加删除用户和组,并设置用户目录

学的快忘的也快,好,把它记下来。
(一) 用户
1. 作为root登录
2. 给你要添加的用户设置用户目录, mkdir /home/yang
3. useradd yang -g  users -G 100 -d /home/yang
-->指定组用 -g,要查看系统目前有哪些组,可以 cat /etc/group
-->如果不设置 -g, -d useradd将使用 /etc/default/useradd 脚本指定的 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号