bluetooth开发(三)------基于rfcomm通信编程之客户端

               蓝牙的基本功能无非就是配对(后面会阐述),基于OPUSH协议的传输文件(后面会讲),向蓝牙播放音频(以后会讲),基于rfcomm的通信,拨号上网,ftp等。通过对bluez的深入学习,已基本上实现了在linux系统下的基本功能,后面还会介绍如何修改蓝牙的配置信息等技术。

这节就简单介绍下基于rfcomm的通信编程的客户端的实现。其实就是socket编程,与我们不同的是IP变成了MAC,端口号变成了Channel。

                在编译的时候记得指定bluez的includes和lbluetooth哦。

配对成功后才能成功!!!!!!!!!!!!!!!!!

  1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #include <unistd.h>
  4 #include <sys/socket.h>
  5 #include <bluetooth/bluetooth.h>                                                                                                          
  6 #include <bluetooth/rfcomm.h>
  7 
  8 int main(int argc,char **argv)
  9 {
 10         struct sockaddr_rc addr={0};
 11         int s,status;
 12         char *dest,*buf;
 13 
 14         if(argc==2)
 15         {
 16                 dest=argv[1];
 17         }
 18         else
 19         {
 20                 printf("Pram error\n");
 21                 exit(1);
 22         }
 23 
 24         printf("Creat socket!\n");
 25         s=socket(PF_BLUETOOTH,SOCK_STREAM,BTPROTO_RFCOMM);
 26         if(s<0)
 27         {
 28                 printf("creat socket error!!\n");
 29                 exit(1);
 30         }
 31 
 32         buf=(char*)malloc(sizeof(char)*128);
 33         addr.rc_family = AF_BLUETOOTH;
 34         addr.rc_channel = (uint8_t)1;
 35         str2ba(dest,&addr.rc_bdaddr);
 36 
 37         printf("connectting...\n");
 38         status=connect(s,(struct sockaddr *)&addr,sizeof(addr));
 39         if(status==0)
 40         {
 41                 printf("scuess!\n");
 42                 status=write(s,"hello!",6);
 43                 printf("If you want to exit,please input : goodbye\n");
 44                 printf("Please input:)\n");
 45                 do{
 46                         scanf("%s",buf);
 47                         status=write(s,buf,strlen(buf));
 48                         if(status<0) perror("uh oh");
 49                         printf("Please input:)\n");
 50                 }while(strcmp(buf,"goodbye")!=0);
 51                 printf("You have exit!\n");
 52         }
 53         else
 54         {
 55                 printf("Connect Failed!\n");
 56         }
 57         free(buf);
 58         close(s);
 59         return 0;
 60 
 61 }


你可能感兴趣的:(linux,通信,蓝牙,BlueTooth,Rfcomm)