2017-01-20 6 views
0

Windows 소켓 프로그래밍에 대한 도움이 필요합니다. 블루투스를 통한 TCP를 통해 안드로이드 폰 (클라이언트)과 C++ 애플리케이션 (서버) 사이의 통신을 만들고 싶습니다. 서버 측에서는 Windows 소켓을 사용합니다.블루투스 (Windows 소켓)를 통한 TCP

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을 실행하려고 합니다만 지금까지는 그 해결책이 없습니다. 그러나, 나는 창 제어판에서 PPP를 만드는 것에 대해 생각해 본 적이 없다. 나는 그것을 시도 할 것이다 - 고마워요! – Lynguistic

+0

@Lynguistic 그게 당신이 블루투스 인터넷 연결을 사용하는 방법입니다 : 당신은 항상 연결되어있는 모뎀처럼 취급하고 다른 일반적인 모뎀과 마찬가지로 : PPP를 사용하여 연결하십시오. –