python网络编程/服务器编程

1、客户/服务器架构

python网络编程/服务器编程_第1张图片

1.1 硬件客户
如:打印机

1.2 软件客户
如:web服务器,数据库服务器

2、套接字

套接字好比连接服务器的“通讯端点”,没有套接字就无法创建连接。
2.1套接字家族
“家族名”: AF_UNIX,
”地址家族“:AF_INET

2.2主机与端口
合法的端口号范围为0 到65535。其中,小于1024 的端口号为系统保留端口。

2.3面向连接和无连接
面向连接套接字,使用的是TCP/IP传输协议
无连接使用的是UDP/IP协议

2.4服务器/客户端编程
2.4.1socket模块
TCP服务器编程

#encoding=utf-8
from socket import *
from time import ctime


HOST='127.0.0.1'
PORT=5005
BUFSIZ=1024
ADDR=(HOST,PORT)
tcpServer=socket(AF_INET,SOCK_STREAM) #创建流类型的服务器套接字
tcpServer.bind(ADDR) #把地址绑定在套接字上
tcpServer.listen(5) #监听连接,最多5个


while True:
print 'Waiting for connection...'
tcpCliSock,addr=tcpServer.accept() #接受客户连接
print '...connected form:',addr #客户端地址
data=tcpCliSock.recv(BUFSIZ) #接受客户端的信息
print data
if not data:
break
tcpCliSock.send('[%s] %s' %(ctime(),data)) #反馈信息给客户端

tcpCliSock.close()tcpServer.close()


客户端编程

#encoding=utf-8
from socket import *


HOST='127.0.0.1'
PORT=5005BUFSIZ=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 datatcp


CliSock.close()

2.4.2SocketServer模块
SocketServer服务器

#encoding=utf-8
from SocketServer import TCPServer,StreamRequestHandler
from time import ctime

HOST='127.0.0.1'
PORT=21567
ADDR=(HOST,PORT)

class MyRequestHandler(StreamRequestHandler):
def handle(self): #处理客户发送的信息
print '...connected from:',self.client_address
self.wfile.write('[%s] %s' %(ctime(),self.rfile.readline())) #write发送信息给客户,self.rfile.readline()读取客户发送的信息


tcpServer=TCPServer(ADDR,MyRequestHandler)
print 'waiting for connection...'tcpServer.serve_forever()

你可能感兴趣的:(python网络编程/服务器编程)