import socket, appuifw, e32, thread
def chat_server():
server = socket.socket(socket.AF_BT, socket.SOCK_STREAM)
channel = socket.bt_rfcomm_get_available_server_channel(server)
server.bind(("", channel))
server.listen(1)
socket.bt_advertise_service(u"btchat", server, True, socket.RFCOMM)
socket.set_security(server, socket.AUTH | socket.AUTHOR)
print "Waiting for clients..."
conn, client_addr = server.accept()
fd = conn.makefile("r+")
waiting_for_msg_same_thread = e32.ao_callgate(receive_msg)
waiting_for_msg = thread.start_new_thread(waiting_for_msg_same_thread, (fd, ))
while(True):
msg = appuifw.query("Send:", "text")
send_msg(fd, msg)
print "Client connected!"
def chat_client():
conn = socket.socket(socket.AF_BT, socket.SOCK_STREAM)
address, services = socket.bt_discover()
if 'btchat' in services:
channel = services[u'btchat']
conn.connect((address, channel))
print "Connected to server!"
fd = conn.makefile("r+")
waiting_for_msg_same_thread = e32.ao_callgate(receive_msg)
waiting_for_msg = thread.start_new_thread(waiting_for_msg_same_thread, (fd, ))
while(True):
msg = raw_input("send: ")
send_msg(fd, msg)
else:
appuifw.note(u"Target is not running a btchat server",
"error")
def receive_msg(fd):
print "Waiting for message.."
reply = fd.readline()
print "Received: " + reply
for i in xrange(4):
print
def send_msg(fd, msg):
msg = appuifw.query(u"Send:", "text")
print "Sending: " + msg
print >> fd, msg
index = appuifw.popup_menu([u"New server", u"Connect to server"],
u"BTChat mode")
if index != None:
if index:
chat_client()
else:
chat_server()