Конечная точка транспорта не подключена 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. я модифицировал его для передачи большого файла размером 8 МБ по bluetooth, используя файловые функции c. я получаю сообщение об ошибке «конечная точка транспорта не подключена», что делать?


person Aathreya S Bhat    schedule 16.01.2013    source источник
comment
У меня точно такая же проблема. Я заметил, что несколько write или send невозможны. Но я не мог найти решение. Теперь я просто закрываю и открываю соединение каждый раз. Если для вас это не проблема с производительностью, то все работает нормально.   -  person Unapiedra    schedule 14.05.2013


Ответы (1)


В коде вы указали номер канала как 1 addr.rc_channel = (uint8_t) 1; Но канал номер 1 означает SDP, который нельзя использовать для передачи файлов. Если ваше удаленное устройство мобильное или любое другое, и если оно поддерживает OPP, вы можете указать номер канала как 9 addr.rc_channel = (uint8_t) 9; и вы увидите, что передача файлов прошла успешно.

person ASB    schedule 29.12.2014