Vizible’s Blog

Python – Broadcast UDP II

Posted in Python by wearetherock on February 2, 2009

ทำต่อจากของเดิม Python – Broadcast UDP เมื่อ Tomboy บันทึกข้อมูล(เป็นช่วง ๆ) มันจะส่ง Signal ออกมา  ซึ่งเราจะส่งข้อมูลออกไปช่วงนั้นแต่ต้องตรวจสอบก่อนว่าผู้ใช้เขียนโน็ตเสร็จหรือยัง  โดยดูจาก ### ถ้ามี ### ตอนท้ายแสดงว่าเสร็จแล้ว โปรแกรมจะ Broadcast ข้อความนั้นออกไปทันที จบ

แต่พิมพ์ภาษาไทยไม่ได้ มัน error ตอน encode จะแก้ยังไง?

import dbus, gobject, socket
from dbus.mainloop.glib import DBusGMainLoop

class MyNote :
	def __init__(self):
		self.bus = dbus.SessionBus()
		self.object = self.bus.get_object("org.gnome.Tomboy", "/org/gnome/Tomboy/RemoteControl")
		self.tomboy = dbus.Interface(self.object, "org.gnome.Tomboy.RemoteControl")
		self.bus.add_signal_receiver(self.save_event_handler, "NoteSaved")
	def save_event_handler(self, note_uri):
		message = self.tomboy.GetNoteContents(note_uri)

		if message.endswith("###") :
			message.encode('utf-8')  # why not support thai, alway error when meet thai char..
			self.send_to_other(str(message))
	
	def send_to_other(self, message):

		my_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
		my_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
		my_socket.sendto(message, ('<broadcast>',8881))

		print 'sent (%s) complete ..' % (message)

def main():
	DBusGMainLoop(set_as_default = True)
	note = MyNote()
	loop = gobject.MainLoop()

	print 'start ...'
	loop.run()

if __name__ == "__main__" :
	main()
Advertisements
Tagged with: , , , ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: