2013-01-16 41 views
1

传输端点没有连接传输端点没有连接的bluez

#include <stdio.h> 
#include <unistd.h> 
#include <sys/socket.h> 
#include <bluetooth/bluetooth.h> 
#include <bluetooth/rfcomm.h> 

int main(int argc, char **argv) 
{ 
struct sockaddr_rc addr = { 0 }; 
int s, i, status; 
char dest[18] = "88:53:2E:10:BB:B0"; 
FILE *ptr1; 
char c; 
char str[1024]; 
// allocate a socket 
s = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM); 

// set the connection parameters (who to connect to) 
addr.rc_family = AF_BLUETOOTH; 
addr.rc_channel = (uint8_t) 1; 
str2ba(dest, &addr.rc_bdaddr); 

// connect to server 
status = connect(s, (struct sockaddr *)&addr, sizeof(addr)); 

// send a message 
if(status == 0) { 
ptr1=fopen("//home//aathreya//Desktop//Bluetooth//imudata_acm0.dat","r"); //open file to be read 
i=0; 
while((c=fgetc(ptr1))!= EOF) //copy 1024 bytes at a time to a string 
    { 
    str[i]=c; 
    i++; 
    if (i==1024) 
     { 
     i=0; 
     status = write(s, str, 1024); 
     } 
    } 
status = write(s, str, 1024); 
status = write(s, "stop", 4); //flag to stop reading at client 
fclose(ptr1); 
} 

if(status < 0) perror("uh oh"); 

close(s); 
return 0; 
} 

我用这个代码从http://people.csail.mit.edu/albert/bluez-intro/x502.html。 我修改它以通过使用c的文件功能通过蓝牙来传输一个8 MB的大文件。 我收到错误“传输端点未连接” 该怎么办?

+0

我有同样的问题。我注意到多个'write'或'send'是不可能的。但我找不到解决方案。我现在只是每次关闭并打开连接。如果这不是你的性能问题,那么它的工作正常。 – Unapiedra

回答

0

在代码中指定了通道号为1 addr.rc_channel =(uint8_t)1; 但通道号1代表不能用于文件传输的SDP 如果您的远程设备是移动设备或任何其他设备,并且它支持OPP,那么您可以将 指定为9的通道号addr.rc_channel =(uint8_t)9; ,你可以看到文件传输成功。

相关问题