设为首页 加入收藏

TOP

Python 标准类库 - 因特网协议与支持之socketserver(二)
2019-03-09 00:20:41 】 浏览:139
Tags:Python 标准 因特网 协议 支持 socketserver
bsp;         if self.data == 'bye':

                self.request.sendall(bytes('bye', encoding='utf-8'))
                self.request.close()
                break
            else:

                self.request.sendall(self.data.upper().encode('utf-8'))

if __name__ == '__main__':
    # 创建TCPSocket服务器,绑定到10.118.52.26地址上,端口8000
    server = socketserver.TCPServer(('10.118.52.26', 8000), MyTCPHandler)


    # 激活服务器,让服务器一直运行,直到按Ctrl+C
    server.serve_forever()

 

运行结果

 

 

 

函数说明:

BaseServer.serve_forever(poll_interval=0.5)

处理shudown请求除外的请求。

 

有关socket说明

socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None)

使用给定的地址家族,socket 类型,协议号创建一个新的socket。

family:默认为AF_INET,其它可选值有AF_INET6, AF_UNIX, AF_CAN or AF_RDS

type:默认为SOCK_STREAM,其它可选值有 SOCK_DGRAM, SOCK_RAW ,或者其它SOCK_XXX常量

protocol:通常为0或者忽略,当family为AF_CAN时,为CAN_RAW、CAN_BCM

 

 

Socket 对象

socket.close()

标记socket为closed

 

close()释放与连接关联的资源,但不一定立即关闭连接。如果要及时关闭连接,请在调用close()之前调用shutdown()。

 

socket.connect(address)

连接给定地址的远程socket

 

 

socket.recv(bufsize[, flags])

从socket接收数据。返回值即为接收的数据。

buffsize:每次接收的最大数据量。.

flags默认为0

 

注意:为了同硬件和网络设备最佳匹配,buffsize应该为一个相对小的2次幂,比如4096

 

socket.sendall(bytes[, flags])

发送字节数据到socket。不同于send方法,该方法会持续发送bytes参数给定的数据,直到所有数据被发送、错误发生。如果发送成功,则返回None,否则抛出异常。没有方法判断到底成功发送了多少数据

 

socket.send(bytes[, flags])

发送字节数据到socket。返回发送字节数,如果只传输了部分数据,程序会尝试发送剩余数据。

 

更多资料参考官方文档,socket模块

 

 

服务端(多线程服务器)

 

#!/usr/bin/env python 3.4.0
#-*- encoding:utf-8 -*-

__author__ = 'shouke'

import socket

import time

if __name__ == '__main__':
    if_sock_connected = False
    try:

        # 创建一个socket (SOCK_STREAM 表示为TCP socket)
        sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


        # 连接到服务器
        sock.connect(('10.118.52.26', 8000))


        # 发送数据
        if_sock_connected = True
        i = 0

        while i < 100:
            if i == 6:
                sock.sendall(bytes('bye\n', "utf-8"))
            else:
  &nbs

首页 上一页 1 2 3 下一页 尾页 2/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Python入门教程三:显示'Welc.. 下一篇Python分布式爬虫抓取知乎用户信..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目