资源简介
做项目时写的文件传输的源码,解决了很多的细节问题,拿出来与大家共享!
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
int s; //判断socket是否建立成功
void baswap(bdaddr_t *dst const bdaddr_t *src)
{
register unsigned char *d = (unsigned char *) dst;
register const unsigned char *s = (const unsigned char *) src;
register int i;
for (i = 0; i<6; i++)
d[i] = s[5-i];
}
//将接收到的字符串型的设备地址转换成bdaddr_t数据结构完成蓝牙地址和字符串的互换
int str2ba(const char *str bdaddr_t *ba)
{
uint8_t b[6];
const char *ptr = str;
int i;
for (i=0; i<6; i++)
{
b[i] = (uint8_t) strtol(ptr NULL 16);
if (i != 5 && !(ptr = strchr(ptr ‘:‘)))
ptr = “:00:00:00:00:00“;
ptr++;
}
baswap(ba (bdaddr_t *) b);
return 0;
}
void sendData(char *dest)
{
struct sockaddr_rc addr = {0};
int status;
int i;
FILE *in; //定义接收文件的指针
char buf[512] = {0}; //接收文件的buf数组
char filename[30] = {0}; //用于存放接收到的文件名字的数组
//给该应用分配一个socket套接字
s = socket(AF_BLUETOOTH SOCK_STREAM BTPROTO_RFCOMM);
if(s < 0)
{
perror(“create socket error“);
exit(1);
}
//设置连接的参数(确定是由哪两个设备进行连接)
addr.rc_family = AF_BLUETOOTH;
addr.rc_channel = (uint8_t)1;
str2ba(dest &addr.rc_bdaddr);
//连接起服务
printf(“connectting...\n“);
status = connect(s (struct sockaddr *)&addr sizeof(addr));
// 建立好连接后进行文件的传输
if(status==0)
{
printf(“success!\n“);
status = write(s “hello!“ 6); //测试通信,发送“hello”
printf(“Please input need send file‘s name:\n“);
scanf(“%s“ filename);
status = write(s filename sizeof(filename)); //发送传输文件的名字
in = fopen( filename “rb“ );
if( in==NULL )
{
printf(“Error:cannot open file!!!\n“);
exit(0);
}
printf(“The document is transmitting............\n“);
while( !feof(in) )
{
i = fread(&buf sizeof(buf) 1 in); // 从文件中得到sizeof(buf)个字符
status = write(s &buf sizeof(buf) );
memset(buf 0 sizeof(buf));
if(status<0)
{
perror(“uh oh“);
}
}
fclose(in);
memset(buf 0 sizeof(buf));
status = write(s “goodbye“ 7); //发送文件传输完成的信号“goodbye“
printf(“The file transfer finished!\n“);
}
else
{
printf(“Failed!\n“);
}
}
int main( int argc char **argv)
{
char *dest; //用于存放BT设备地址字符串的指针
//用于判断起动该应用程序的命令中是否指定了服务器的设备地址
if(argc==2)
{
dest=argv[1];
}
else
{
printf(“prarm error:please input buletooth‘s address\n“);
exit(1);
}
sendData(dest);
close(s); //关闭服务
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 14216 2007-06-09 19:55 文件传输源码和可执行文件\fileClient
文件 3235 2007-06-09 19:55 文件传输源码和可执行文件\fileClient.c
文件 17173 2007-06-09 19:55 文件传输源码和可执行文件\fileServer
文件 5455 2007-06-09 19:55 文件传输源码和可执行文件\fileServer.c
目录 0 2008-06-03 23:05 文件传输源码和可执行文件
----------- --------- ---------- ----- ----
40079 5
相关资源
- saleae 1.2.10 红外协议DLL插件
- 西电光纤通信实验报告
- VCRename改工程名工具 vc rename
- echarts的axisLabel添加tooltip功能
- echarts实现相邻气泡图
- NDK Socket通讯小程序
- 利用OpenGL和ArcGIS处理得到的坐标数据
- Boykov的GraphCut算法
- pyOpenSSL+zope.interface
- coding4fun的包
- 遥感图像中机场跑道检测算法的研究
- IntrotoSecISM.pdf
- 《数据结构与算法课程设计》报告模
- opencv分类器.rar
- .Net中几个主流IOC依赖注入框架Demo
- robocode 经典学习笔记
- Lecture-7-Viterbi&BCJR;.pdf
- linux 0.11 bochs2.6.9配置文件
- MICCAI2018接收论文列表
- MIPS 32位CPU中ALU的实现
- XP_上安装Tablet_PC组件所需要的inf
- UniPatcher_v2017.6.exe和谐Unity2017.2
- LCD字符滚动显示
- Spring Security 3.1.0 官方文档中文.chm
- bd6c83ef89bd4112bb878cfb80a22251.zip
- socketcan提供的linux下的CAN网络工具包
- VC嵌入式CLips专家系统实现战场环境的
- 单片机上实现的modbus_tcp通信
- PowerMock实战手册.pdf
- 1994Nonlinear Dynamics and Chaos - Strogatz
评论
共有 条评论