专栏名称: python实战
Python实战
目录
相关文章推荐
Python爱好者社区  ·  yyds!哈工大博士的PyTorch笔记终终 ... ·  6 天前  
Python爱好者社区  ·  “洪荒之力”傅园慧,任职C9! ·  1 周前  
Python爱好者社区  ·  事业编一年6万,干40年退休总共挣240万。 ... ·  5 天前  
Python中文社区  ·  恐慌中的红利:用“恐慌指数”VIX寻找爆发点! ·  1 周前  
51好读  ›  专栏  ›  python实战

怎样用socketServer模块来写一个关于消息发送与接收的脚本

python实战  · 公众号  · Python  · 2017-01-11 20:28

正文

socketServer模块是一个高级模块他可以帮助我们简化很多样板代码 让我们写socket更加轻松。今天我们来写一个关于消息发送与接收的脚本,架构是C/S(客户端与服务端)架构


流程大概是这样子的  代码在下面

服务端代码

from SocketServer import (TCPServer as TCP, StreamRequestHandler as SRH) #导入模块并取别名 as是别名
from time import ctime     #导入打印时间模块ctime
HOST = ''
PORT = 22222
ADDR = (HOST, PORT)     #bind()方法的表示 绑定主机和端口

class MyRrequestServer(SRH):
def handle(self):      #重构handle方法 在StreamRequestHandler中handel方法里面什么都没有 这里的意思是只有有请求过来就先执行handle方法
print '...connected from:', self.client_address    #打印客户端地址
self.wfile.write('[%s] %s' % ( ctime(), self.rfile.readline()))  #返回数据给客户端 第一个参数是当前时间  第二个参数是打印传过来的数据
        #self.wfile.write('Client: %sn ' % str(self.client_address) )
tcpserv = TCP(ADDR, MyRrequestServer)    #绑定主机信息
print 'waiting form connet'
tcpserv.serve_forever()     #创建TCP服务器
from socket import *    #导入socket模块
HOST = 'localhost'      #服务端地址 我是本地开启的服务端所以我填localhost
PORT = 22222              #要连接服务端的端口
BUFSIZ = 1024             #缓存区大小设置为1k  可以设置为大一点
ADDR = (HOST, PORT)      

while True:
    tcpCli = socket(AF_INET, SOCK_STREAM)  
#分配客户端套接字
tcpCli.connect(ADDR)                    #主动调用并连接到服务器
data = raw_input('> ')                 #输入信息提示符
if not data:                          
break
tcpCli.send('%s\r\n' % data)          #发送信息到服务端
data = tcpCli.recv(BUFSIZ)             #接收服务端的返回的信息
if not data:
break
    print
data.strip()                    #打印接收到的信息
tcpCli.close()                         #关闭连接


服务端信息

客户端信息


大家可以自行在电脑上敲敲看,感受下socketServer模块的强大。想要获取更多教学资料请+群:330637182   python学习交流无论是新手教学还是项目实战群内应有尽有。