Bonjour à tous,
depuis un petit moment j'essaie de faire un programme qui puisse communiquer avec mon téléphone portable.
Je me confronte cependant à un problème au moment de la création du socket bluetooth. Avant même de tenter quoi que ce soit, le retour de la fonction socket est invalide :
Ce qu'il se passe :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 int main(int ac, char **av) { int s; /*mon socket*/ /* un peu de code au début concernant WSAStartup() que j'ai zappé, pas utile pour mon problème */ s = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM); if (s == INVALID_SOCKET) printf("socket invalide %d\n", WSAGetLastError()); else printf("Ok\n" ); WSACleanup(); return (0); }
Le programme trouve le socket invalide, et m'écrit, tel que je lui demande, "socket invalide" suivi du numéro d'erreur, en l'occurence 10047
d'après Microsoft :
http://msdn.microsoft.com/en-us/li [...] S.85).aspx
OR :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 WSAEAFNOSUPPORT 10047 Address family not supported by protocol family. An address incompatible with the requested protocol was used. All sockets are created with an associated address family (that is, AF_INET for Internet Protocols) and a generic protocol type (that is, SOCK_STREAM). This error is returned if an incorrect protocol is explicitly requested in the socket call, or if an address of the wrong family is used for a socket, for example, in sendto.
d'après le man socket() de crosoft :
http://msdn.microsoft.com/en-us/li [...] S.85).aspx
Les paramètres que je donne à ma fonction socket sont bien AF_BTH, SOCK_STREAM et BTHPROTO_RFCOMM
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 BTHPROTO_RFCOMM 3 The Bluetooth Radio Frequency Communications (Bluetooth RFCOMM) protocol. This is a possible value when the af parameter is AF_BTH and the type parameter is SOCK_STREAM. This protocol is supported on Windows XP SP2 or later.
Malgré cela WSAGetLastError me dis que l'address family n'est pas supporté, je ne comprends pas pourquoi.
Je fouille donc directement au niveau de l'address family
Je suis bien sous Windows XP SP2 (je suis passé au SP3 mais ça marche pas non plus, j'ai bien un adaptateur bluetooth (intégré) qui fonctionne avec les logiciels de base)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 AF_BTM (il y a un define AF_BTM AF_BTH) 32 The Bluetooth address family. This address family is supported on Windows XP SP2 or later if the computer has a Bluetooth adapter and driver installed.
les includes que j'ai sont, dans l'ordre,
Si vous pouviez m'aider en me disant d'où ça vient, je vous en serai reconnaissant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 #include <stdlib.h> #include <stdio.h> #include <Winsock2.h> #include <Ws2bth.h> #include <Bthsdpdef.h> #include <BluetoothAPIs.h>
Merci d'avance pour votre aide
Up7
Partager