- 部分 I. Python 入门
- 第 1 章 Python 入门
- 第 2 章 Python Package Index (PyPI)
- 第 3 章 Python 模块
- 第 4 章 数据类型
- 第 5 章 数据结构
- 第 6 章 Class
- 第 7 章 Input/Output
- 第 8 章 Pipe
- 第 9 章 Library
- 9.2. 随机数
- 9.3. Python 多线程
- 9.13. syslog
- 9.5. Socket
- 9.6. subprocess
- 9.7. YAML
- 9.8. Daemon
- 9.9. python-memcached
- 9.10. Pyro - Pyro is short for PYthon Remote Objects
- 9.11. Python Imaging Library
- 9.12. getopt – Command line option parsing
- 9.14. python-subversion
- 9.15. SimpleHTTPServer
- 9.16. fuse-python.x86_64 : Python bindings for FUSE - filesystem in userspace
- 9.17. Network
- 9.18. Python-spdylay - Spdylay Python Extension Module
- 9.19. mechanize
- 9.20. Dominate
- 第 10 章 Frameworks
- 第 12 章 终端环境开发
- 部分 II. Python 数据分析
- 第 13 章 Crawler
- 第 14 章 Scrapy - Python web scraping and crawling framework
- 第 15 章 Pandas - Python Data Analysis Library
- 第 16 章 股票
- 第 17 章 数据可视化
- 部分 III. 人工智能 AI
- 第 18 章 OCR
- 第 19 章 语音处理
- 第 20 章 视频
- 第 21 章 人脸识别
- 第 22 章 自然语言处理
- 第 23 章 自动化运维
- 第 24 章 办公自动化
- 第 25 章 OpenCV
- 第 26 章 图形开发
- 第 27 章 3rdparty toolkit
- 第 29 章 实用代码
- 第 30 章 FAQ
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
9.5. Socket
9.5. Socket
9.5.1. UDP
9.5.1.1. UDP Server
import asyncore, socket class AsyncoreServerUDP(asyncore.dispatcher): def __init__(self): asyncore.dispatcher.__init__(self) # Bind to port 5005 on all interfaces self.create_socket(socket.AF_INET, socket.SOCK_DGRAM) self.bind(('', 5005)) # Even though UDP is connectionless this is called when it binds to a port def handle_connect(self): print "Server Started..." # This is called everytime there is something to read def handle_read(self): data, addr = self.recvfrom(2048) print str(addr)+" >> "+data # This is called all the time and causes errors if you leave it out. def handle_write(self): pass AsyncoreServerUDP() asyncore.loop()
9.5.1.2. UDP Clinet
import socket, asyncore class AsyncoreClientUDP(asyncore.dispatcher): def __init__(self, server, port): asyncore.dispatcher.__init__(self) self.server = server self.port = port self.buffer = "" # Network Connection Magic! asyncore.dispatcher.__init__(self) self.create_socket(socket.AF_INET, socket.SOCK_DGRAM) self.bind( ('', 0) ) # bind to all interfaces and a "random" free port. print "Connecting..." # Once a "connection" is made do this stuff. def handle_connect(self): print "Connected" # If a "connection" is closed do this stuff. def handle_close(self): self.close() # If a message has arrived, process it. def handle_read(self): data, addr = self.recv(2048) print data # Actually sends the message if there was something in the buffer. def handle_write(self): if self.buffer != "": print self.buffer sent = self.sendto(self.buffer, (self.server, self.port)) self.buffer = self.buffer[sent:] connection = AsyncoreClientUDP("127.0.0.1",5005) # create the "connection" while 1: asyncore.loop(count = 10) # Check for upto 10 packets this call? connection.buffer += raw_input(" Chat > ") # raw_input (this is a blocking call)
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论