python3得到socketservice模块

       SocketServer 是标准库中的一个高级模块(Python 3.x 中重命名为 socketserver),它的目标是简化很多样板代码,它们是创建网络客户端和服务器所必需的代码。如下为使用socketsever实现服务端代码,在使用socketserver时对于python2来说模块名为:SocketServer;对于python3来说是socketserver。

# -*- coding: utf-8 -*-
"""
Created on Fri Feb 22 16:56:16 2019

@author: Administrator
创建 SocketServer TCP 服务器 
"""
#在使用socketserver时对于python2来说模块名为:SocketServer;对于python3来说是socketserver
from socketserver import (TCPServer as TCP,StreamRequestHandler as SHR)
from time import ctime

HOST='127.0.0.1' #设置服务器主机(与客户端使用同一个地址)
PORT=21567       #设置服务器端口号(与客户端使用同一个地址)
#BUFSIZE=1024     #设置发送/接收的最大字节数
ADDR=(HOST,PORT)

class MyRequestHandler(SHR): # MyRequestHandler,作为 SocketServer 中 StreamRequestHandler 的一个子类
    def handle(self): #重写handle()方法
        print('...connected from:',self.client_address)
        #将使用 readline()来获取客户端消息, 并利用 write()将字符串发送回客户端
        #发送之前要将str类型编码为byte
        data='[%s] %s' % (ctime(),self.rfile.readline().decode("utf-8")) #接收到的消息要解码
        data=data.encode("utf-8") #发送之前要编码
        self.wfile.write(data) 
        
tcpServ=TCP(ADDR,MyRequestHandler) #创建TCP服务器
print('waiting for connection...')

tcpServ.serve_forever() #无限循环的服务于客户端
 

如下为使用socket实现客户端代码:

# -*- coding: utf-8 -*-
"""
Created on Wed Feb 27 16:17:47 2019

@author: Administrator
创建 SocketServer TCP 客户端
"""
from socket import *

#TCP时间戳客户端
#创建TCP客户端伪码
#cs = socket()               # 创建客户端套接字 
#cs.connect()                # 尝试连接服务器 
#comm_loop:                  # 通信循环     
#    cs.send()/cs.recv()     # 对话(发送/接收) 
#cs.close()                  # 关闭客户端套接字 
HOST='127.0.0.1'
PORT=21567
BUFSIZE=1024
ADDR=(HOST,PORT)

tcp_client_socket=socket(AF_INET, SOCK_STREAM) #创建客户端套接字
tcp_client_socket.connect(ADDR) #尝试连接服务器:当连接建立之后,它就可以参与到与服务器的一个对话中

while True:
    data=input('please input something:')
    #因为这里使用的处理程序类对待套 接字通信就像文件一样,所以必须发送行终止符(回车和换行符)。
    #而服务器只是保留并重用 这里发送的终止符。当得到从服务器返回的消息时,用 strip()函数对其进行处理并使用由 print 声明自动提供的换行符。 
    data='%s\r\n' % data #在data还是字符串类型时,设置格式
    #发送之前要编码,增加编码转码,send需要的是byte类型的参数,此处为对数据类型的转换
    data = data.encode("utf-8")
    #print(type(data))
    if not data:
        break
    tcp_client_socket.send(data) #发送消息
    data=tcp_client_socket.recv(BUFSIZE)
    if not data:
        break
    #接受之后要解码
    print(data.decode('utf-8').strip()) # strip()函数对其进行处理并使用由 print 声明自动提供的换行符
    
tcp_client_socket.close() #关闭客户端套接字

#注意:
#1.在发送之前要编码,在接受之后要解码,原因是python3的发送与接受方法只接收byte参数
#2.SocketServer 请求处理程序的默认行为是接受连接、获取请求,然后关闭连接;每次向服务器发送消息时, 都需要创建一个新的套接字
#  即使用socketserver作为服务端,客户端每次发送请求都要重新执行代码,不会一次执行,无限发送

喜欢我的文章希望和我一起成长的宝宝们,可以搜索并添加公众号TryTestwonderful ,或者扫描下方二维码添加公众号

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

TryTestwonderful

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值