Windowsソケットプログラミングに関する助けが必要です。私はアンドロイド電話(クライアント)とC++アプリケーション(サーバー)との間で、Bluetooth over TCPを使用して通信したいと考えています。サーバー側では、Windowsソケットを使用します。TCP over Bluetooth(Windowsソケット)
すでにRFCOMM経由で両方のインスタンス間の接続が確立されていますが、TCP/IP経由で接続する必要があります。誰も私がWindowsの下でBluetoothソケットを作成し、その上にTCPメッセージを送信する方法を知っていますか?
ありがとうございます!
%%
*************更新***********最近、私は窓のスタックを経由してそれを実装しようとしました。接続は確立されますが、通信は依然としてrfcommベースです。誰かが私の誤りや誤った考え方を知っていますか?
serverSocket = socket(AF_BTH, SOCK_STREAM, BTHPROTO_RFCOMM);
// error checks
SOCKADDR_BTH sa;
memset (&sa, 0, sizeof(sa));
sa.addressFamily = AF_BTH;
sa.port = 11 & 0xff;
sa.serviceClassId = TCP_PROTOCOL_UUID;
bind(serverSocket, (SOCKADDR*)&sa, sizeof(sa));
// error checks
// Register Service
WSAQUERYSET service1;
memset(&service1, 0, sizeof(service1));
service1.dwSize = sizeof(service1);
service1.lpszServiceInstanceName = _T("ViL Data...");
service1.lpszComment = _T("Pushing data to Android");
GUID serviceID1 = TCP_PROTOCOL_UUID;
service1.lpServiceClassId = &serviceID1;
service1.dwNumberOfCsAddrs = 1;
service1.dwNameSpace = NS_BTH;
CSADDR_INFO csAddr1;
memset(&csAddr1, 0, sizeof(csAddr1));
csAddr1.LocalAddr.iSockaddrLength = sizeof(SOCKADDR_BTH);
csAddr1.LocalAddr.lpSockaddr = (sockaddr*)&sa;
csAddr1.iSocketType = SOCK_STREAM;
csAddr1.iProtocol = IPPROTO_TCP;
service1.lpcsaBuffer = &csAddr1;
WSASetService(&service1, RNRSERVICE_REGISTER, 0)
// error checkings
これは問題なく動作し、Androidアプリからサーバーに接続できます。しかし、私はまだそれがTCP上でそれを伝えない理由は混乱しています。誰も助けることができますか?
はい私はWindowsスタックでそれを行い、rfcommを実行しようとしていますが、今までは解決策が見つかりませんでした。しかし、私はWindowsのコントロールパネルからPPPを作成することは考えていませんでした。私はそれを試してみましょう - ありがとう! – Lynguistic
@Lynguisticそういうわけで、あなたはいつも接続されているモデムと同じように扱います。他の典型的なモデムと同じように、PPPを使って接続します。 –