2013-04-05 3 views
11

파이썬 3.3은 블루투스 소켓을 기본적으로 지원합니다. 불행히도 아직 잘 문서화되어 있지 않습니다 (documentation에는 단 하나의 언급 만 있습니다).파이어 폭스 서버와 파이썬 3.3

클라이언트를 구현하는 방법에 대해 a blog post을 검색하고 있지만 서버를 만드는 방법에 대해서는 찾을 수 없습니다.

좀 더 구체적으로, 사용자 친화적 인 이름을 설정하고 서비스를 광고하는 방법.

그래서,

import socket 

serverSocket = socket.socket(socket.AF_BLUETOOTH, 
          socket.SOCK_STREAM, 
          socket.BTPROTO_RFCOMM) 
serverSocket.setTimeout(1) 
serverSocket.bind(("", 1)) 
serverSocket.listen(1) 

something.advertise_service(something something) 

어떤 아이디어가 뭔가?

+1

그들은 기본적으로 pybluez를 통합 한 것처럼 보입니다. 다음 예제를 살펴보십시오. https://code.google.com/p/pybluez/source/browse/trunk/examples/simple/rfcomm-server.py – TJD

+1

'advertise_service'가 소켓 모듈이나 서버 소켓, 그리고 파이썬의 소스 코드에서 'advert'을 검색하는 것은 관련없는 주석 세 개만 찾습니다. –

+1

같은 문제가 생겼습니다. 나는 간단한 서버를 만들 수 있었지만 서비스 광고와 같은 작업을 수행 할 수 없었습니다. 관심이있는 경우 여기에서 클라이언트 서버 응용 프로그램 코드를 볼 수 있습니다. http://kevindoran1.blogspot.co.nz/2013/04/bluetooth-programming-with-python-3.html – Kevin

답변

11

나쁜 소식 : Python이 사용자가 원하는 것을 지원하지 않는 것으로 보입니다. 적어도 socketmodule.c에는 없습니다.

는 2009 년

좋은 소식 이후 업데이트되지 않은 비록 내가 사용 pybluez을 본 적이 파이썬/블루투스 사용자의 대부분 : 나는 (리눅스 연결) 자신의 소스를 통해 가고, 발견 광고 서비스 관련 비트. 대부분의 코드는 본질적으로 socketmodule.c의 python 2.2 버전에서 복사하여 붙여 넣습니다.

pybluezsocket 개체가 모든 블루투스 광고를 구현할 수있는 몇 가지 추가 기능을 정의합니다. 너무 낮은 수준이 아니며 대신 BlueZ에 의존합니다. 내가 말할 수있는 것부터, 기본적으로 파이썬 객체를 취하고 BlueZ에 의해 예상되는 데이터 구조를 만들고 그냥 호출합니다. pybluez을 사용하고 싶지 않거나 사용하지 않으려면이 누락 된 기능을 어떻게 든 구현해야합니다. 나는 당신이 C 타입으로 그것을 할 수있을 것이라고 생각합니다. 서비스 광고 관련 부분은 btmodule.c, 줄 2562-2642입니다.

pybluez에 대한 소스에 python-3 브랜치가 있지만 작동 여부는 알 수 없습니다. 당신이 pybluez를 사용하기로 결정하는 경우

는, 예를 들어 구글 코드가 폐쇄됨에 따라, 코드도 GitHub의 here에서 찾을 수 있습니다 their source

server_sock=BluetoothSocket(RFCOMM) 
server_sock.bind(("",PORT_ANY)) 
server_sock.listen(1) 

port = server_sock.getsockname()[1] 

uuid = "94f39d29-7d6d-437d-973b-fba39e49d4ee" 

advertise_service(server_sock, "SampleServer", 
        service_id = uuid, 
        service_classes = [ uuid, SERIAL_PORT_CLASS ], 
        profiles = [ SERIAL_PORT_PROFILE ], 
       ) 

에서 가져옵니다.

+0

감사합니다. py3을 사용해야하므로 PC를 슬레이브로 사용하지 않을 것 같습니다. –