Python网络编程
Python中的网络编程主要使用socket模块。模块中的socket()函数被用来创建套接字。
下面的代码分别实现了TCP的服务端和客户端,以及UDP的服务端和客户端。
TCP服务端
#!/usr/bin/ env python
#coding=utf-8
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM)
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
print ('waiting for connection....')
tcpCliSock, addr = tcpSerSock.accept()
print('...connected from:', addr)
# tcpCliSock.send('[%s] %s' %(ctime(),"Welcome to visit the blog of Chris! "))
# tcpCliSock.close()
while True:
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
tcpCliSock.send('[%s] %s' %(ctime(),"Welcome to visit the blog of Chris! "))
tcpCliSock.close()
tcpSerSock.close()
TCP客户端
#!/usr/bin/ env python
#coding=utf-8
from socket import *
HOST = 'LOCALHOST'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET,SOCK_STREAM)
tcpCliSock.connect(ADDR)
while True:
data = raw_input('> ')
if not data:
break;
tcpCliSock.send(data)
data = tcpCliSock.recv(BUFSIZ)
if not data:
break
print(data)
tcpCliSock.close()
UDP服务端
#!/usr/bin/ env python
#coding=utf-8
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpSerSock = socket(AF_INET,SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
print('waiting for message...')
data, addr = udpSerSock.recvfrom(BUFSIZ)
udpSerSock.sendto('[%s] %s' %(ctime(),data), addr)
print('...received from and returned to:', addr)
udpSerSock.close()
UDP客户端
#!/usr/bin/ env python
#coding=utf-8
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True:
data = raw_input('> ')
if not data:
break
udpCliSock.sendto(data, ADDR)
data,ADDR = udpCliSock.recvfrom(BUFSIZ)
if not data:
break
print (data)
udpCliSock.close()
Twisted简介
Twisted是一个完全事件驱动的网络框架。它是一款完全异步的网络应用程序和协议。它可以让你创建一个包含网络协议,线程安全和认证,聊天/即时通讯,数据库管理,关系型数据库继承,网页/互联网,电子邮件,命令行参数,图形界面集成等完整的一个系统。
Twisted 模块并没有在Python中的标准库里,所以需要下载安装,我电脑上有两个版本的Python,所以要看好是安装在哪个版本里的。
这块以后有机会我们可以详细八一下。