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()