资源简介
做项目时写的文件传输的源码,解决了很多的细节问题,拿出来与大家共享!

代码片段和文件信息
#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
相关资源
- Scratch源码
- Microsoft Forms 2.0107770
- 实验三 消息中间件应用开发:Active
- WCE注入工具
- ModelGoon-4.4.1-site.zip
- AsyncTask文件控制暂停和继续,在状态
- Visio大全模具(含Cisco、IBM等常用拓扑
- 信号奇异点Lipschitz指数计算
- 基于STM32RCT6的步进电机驱动程序
- 酒店管理系统基于Qt Creator5)
- 用友NC开发API字典
- Navicat Premium 15汉化包.zip55438
- 登录注册界面.zip48872
- 条码字体barcode128
- Rational Rose Common破解文件
- res10_300x300_ssd_iter_140000.caffemodel与dep
- scratch 第1课 翻跟斗的小猫(入门)
- stm32f407上的两个can发送和接收例程
- Scrach 欢乐狙击手.sb2
- 04741计算机网络原理知识点整理.docx(
- Wolfram Mathematica 矩阵初等变换函数(
- pscad近海风电模型 Fortran语言
- 程序员专用字体YaHei.Consolas.1.11b42517
- scratch3.0 源程序(说相声)
- AutoCAD永久去教育版破解补丁
- 开源1A锂电池充电板TP4056原理图+PCB
- m1卡 ic卡可选择扇区初始化加密软件
- TSCC.exe
- 欧姆龙CP1系列单轴定位PLC程序.cxp
- 用Beckhoff(倍福)PLC读写巴鲁夫RFID
评论
共有 条评论