2017-01-20 14 views
0

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上でそれを伝えない理由は混乱しています。誰も助けることができますか?

答えて

0

RFCOMMはエミュレートされたシリアルポートで、インターネットプロトコルとはまったく関係ありません。 RFCOMM経由で運行するトランスポートを作成する必要があります。 PPP接続。 Windowsでは、コントロールパネルのネットワーク設定を使用して新しい接続を追加することでそれを行います。 PPPは本質的にヌルモデムで動作します。あなたのアプリケーションはプログラム的にそれを行うことができますが、それは一連のステップ全体です。また、Windowsのネットワーキングスタック設定を混乱させたくない場合は、ネットワーキングスタックをアプリケーションに埋め込み、RFCOMMポート経由で直接PPPを使用して発言させることもできます。

+0

はい私はWindowsスタックでそれを行い、rfcommを実行しようとしていますが、今までは解決策が見つかりませんでした。しかし、私はWindowsのコントロールパネルからPPPを作成することは考えていませんでした。私はそれを試してみましょう - ありがとう! – Lynguistic

+0

@Lynguisticそういうわけで、あなたはいつも接続されているモデムと同じように扱います。他の典型的なモデムと同じように、PPPを使って接続します。 –