传输端点未连接bluez

时间:2013-01-16 07:11:38

标签: c endpoint rfcomm transport 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的大文件。 我收到错误“传输端点未连接” 该怎么办?

1 个答案:

答案 0 :(得分:0)

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