All of lore.kernel.org
 help / color / mirror / Atom feed
* [Bluez-devel] To blueZ developers : can't do two "connect" concurrently, help required !
@ 2006-11-03 20:36 Olivier Le Pogam
  2006-11-03 21:26 ` Brad Midgley
  2006-11-04 16:42 ` Peter Wippich
  0 siblings, 2 replies; 4+ messages in thread
From: Olivier Le Pogam @ 2006-11-03 20:36 UTC (permalink / raw)
  To: BlueZ development


[-- Attachment #1.1: Type: text/plain, Size: 3316 bytes --]

Hi,

For the ones who have read my messages a few days ago ...
I am still performing concurrency tests !

I run a server on 2 remote devices (one on channel 24, the
other on channel 25), and I try to connect to them concurrently 
from the same Linux box / BT key (the remote servers are simple "echo" 
ones, the linux client is sending numbers from 1 to 10 with a sleep(1) at 
each step).

I have a simple batch :

client.sh :
./client 00:16:4E:83:2D:19  25 &
./client 00:0D:88:9B:FF:D7  24 &

where client is called with BDADDR and channel

Here is what I get in my logs :

Connection to remote 00:16:4E:83:2D:19 channel 25
Connection to remote 00:0D:88:9B:FF:D7 channel 24
[00:16:4E:83:2D:19] Can't connect(111)    ====> 111 is connection refused
[00:0D:88:9B:FF:D7] Connected to remote 00:0D:88:9B:FF:D7 channel 24, from local 00:11:67:0D:2E:2C channel 24
[00:0D:88:9B:FF:D7] Sent 0 received 0
...

If I swap the order of calling "client" i.e :

client.sh :

./client 00:0D:88:9B:FF:D7  24 &
./client 00:16:4E:83:2D:19  25 &

Then it's still the first which can't connect (now it will be 00:0D:88:9B:FF:D7)

So basically, it seems that there can't be two "connect"
concurrently on the same adaptor.

Can please BlueZ developers confirm ?

Thanks a lot
Oli

For who is interested, here is the interesting part of client.c :

int main(int argc, char **argv)
{
    struct sockaddr_rc laddr, raddr;
    int sk, i;

    memset(&laddr, 0, sizeof(laddr));
    memset(&raddr, 0, sizeof(raddr));

    laddr.rc_family = AF_BLUETOOTH;
    bacpy(&laddr.rc_bdaddr, BDADDR_ANY);
    laddr.rc_channel = 0;

    raddr.rc_family = AF_BLUETOOTH;
    str2ba(argv[1], &raddr.rc_bdaddr);
    raddr.rc_channel = atoi(argv[2]);
 
   if (argc != 3) {
     fprintf(stderr,"Usage: client address channel\n");
     exit(EXIT_FAILURE);
   }

 debugOutput("Connection to remote %s channel %s", argv[1], argv[2]);

    sk = socket(AF_BLUETOOTH, SOCK_STREAM, BTPROTO_RFCOMM);
    if (sk < 0) {       
        debugOutput("[%s] Can't create RFCOMM socket", argv[1]);
        return -1;
    }

    if (bind(sk, (struct sockaddr *)&laddr, sizeof(laddr)) < 0) {
        debugOutput("[%s] Can't bind RFCOMM socket", argv[1]);
        close(sk);
        return -1;
    }

    if (connect(sk, (struct sockaddr *)&raddr, sizeof(raddr)) < 0) {
        debugOutput("[%s] Can't connect(%d)", argv[1], errno);
        close(sk);
        return -1;
    }

 char loc_addr[30];
 strcpy(loc_addr, "");
 
    int len = sizeof(laddr); 
    if (getsockname (sk, &laddr, &len ) > 0)
       debugOutput("[%s] Can't getsockname", argv[1]);
 else ba2str(&laddr.rc_bdaddr, loc_addr);
  
 debugOutput("[%s] Connected to remote %s channel %s, from local %s channel %d", argv[1], argv[1], argv[2], loc_addr, laddr.rc_channel);
 
 for (i = 0; i<10; i++)
 {
  char buf[1024];
  sprintf(buf, "%d%c", i, 10);
  write(sk, buf, strlen(buf));
  strcpy(buf, "");
  
  readString(sk, buf);
  if( strlen(buf) > 0 ) {
   debugOutput("[%s] Sent %d received %s", argv[1], i, buf);
    } else {
   debugOutput("[%s] Sent %d received no answer", argv[1], i);
   break;
  }
  sleep(1);
 }
 
    close(sk);
 debugOutput("[%s] Disconnected", argv[1]);

    return 0;
}

[-- Attachment #1.2: Type: text/html, Size: 6676 bytes --]

[-- Attachment #2: "AVG certification" --]
[-- Type: text/plain, Size: 151 bytes --]

No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.409 / Virus Database: 268.13.25/515 - Release Date: 03/11/2006


[-- Attachment #3: Type: text/plain, Size: 373 bytes --]

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642

[-- Attachment #4: Type: text/plain, Size: 164 bytes --]

_______________________________________________
Bluez-devel mailing list
Bluez-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bluez-devel

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2006-11-04 16:42 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-11-03 20:36 [Bluez-devel] To blueZ developers : can't do two "connect" concurrently, help required ! Olivier Le Pogam
2006-11-03 21:26 ` Brad Midgley
2006-11-04 16:38   ` Olivier Le Pogam
2006-11-04 16:42 ` Peter Wippich

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.