关于socketserver

关于socket的更多方法

服务端套接字函数:

s.bind()   绑定(主机,端口号)到套接字
s.listen()  开始tcp监听
s.accept () 被动接受tcp客户的连接,(阻塞式)等待连接的到来 客户端套接字函数: s.connect()  主动初始化tcp服务器连接
s.connect()_ex()   是拓展版本,出错时返回出错码,而。不是抛出异常。 公共用途的套接字函数 s.recv()  接收tcp数据
s.send()  发送tcp数据
s.sendall()  发送tcp数据
s.recvfrom()  接收udp数据
s.sendto()  发送udp数据
s.getpeername()  连接到当前套接字的远端的地址
s.getsockname()  当前套接字的地址
s.getsockopt()    返回指定套接字的参数
s.setsockopt()    设置指定套接字的函数
s.close()    关闭套接字 面向锁的套接字方法:
s.setbl1ocking() 设置套接字的阻塞与非阻塞模式
s.settimeout() 设置阻塞套接字操作的超时时间
s.gettimeout() 得到阻塞套接字操作的超时时间 面向文件的套接字的函数:
s.fileno() 套接字的文件描述符
s.makefile() 创建一个与该套接字相关的文件

1.2  验证客户端链接的合法性

    注释:主要防止黑客截取信息然后植入病毒,采用加盐hmac方式实现简单的客户端链接认证功能。

import socket
import os
import hmac
def auth(conn):
msg=os.urandom(32)
conn.send(msg)
result=hmac.new(key,msg)
client_digest=conn.recv(1024)
if result.hexdigest()==client_digest.decode('utf-8')
print('是合法的连接')
else:
print(‘不合法的连接’)
return False secret_key=b'alex_ab'
sk=socket.socket()
sk.bind(('127.0.0.1',9000))
sk.listen()
conn,addr=sk.accept()
if auth(conn):
print(conn.recv(1024))
conn.close()
else:
conn.close()
sk.close()
import hamc
import socket
def auth(sk):
msg=sk.recv(32)
result=hmac.new(key,msg)
res=result.hexdigest()
sk.send(res.encode('utf-8'))
key=b'alex_s'
sk=socket.socket()
sk.connect(('127.0.0.1',9000))
auth(sk)
sk.send(b'upload')
sk.close()

1.3 关于socketserver的并发编程

import socketserver
class Myserver(socketserver.BaseTequestHandler):
def handle(self):
conn=self.request
while True:
conn.send(b'hello')
print(conn.recv(1024))
server=socketserver.ThreadingTCPSserver(('127.0.0.1',9000),Myserver)
server.serve_forever()
import socket

sk = socket.socket()
sk.connect(('127.0.0.1',9000))
while True:
ret = sk.recv(1024)
print(ret)
sk.send(b'byebye')
sk.close()

网络编程之socketserver以及socket更多方法的更多相关文章

  1. python3网络编程之socketserver

    本节主要是讲解python3网络编程之socketserver,在上一节中我们讲到了socket.由于socket无法支持多用户和多并发,于是就有了socket server. socket serv ...

  2. 网络编程之socketserver

    网络编程之socketserver """ socketserver.py 中的5个基础类 +------------+ | BaseServer | +-------- ...

  3. 网络编程之socketserver初识

    网络编程之socketserver初识 Server #!/usr/bin/env python # @Author : "Wjl" # @Date : 2017/12/22 # ...

  4. GO语言的进阶之路-网络编程之socket

    GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...

  5. 网络编程之Socket代码实例

    网络编程之Socket代码实例 一.基本Socket例子 Server端: # Echo server program import socket HOST = '' # Symbolic name ...

  6. 网络编程之socket

    网络编程之socket socket:在网络编程中的一个基本组件,也称套接字. 一个套接字就是socket模块中的socket类的一个实例. 套接字包括两个: 服务器套接字和客户机套接字 套接字的实例 ...

  7. 网络编程之Socket & ServerSocket

    网络编程之Socket & ServerSocket Socket:网络套接字,网络插座,建立网络通信连接至少要一对端口号(socket).socket本质是编程接口(API),对TCP/IP ...

  8. [深入浅出Cocoa]iOS网络编程之Socket

    http://blog.csdn.net/kesalin/article/details/8798039 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[+]   [深入浅出Co ...

  9. [网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序]

    [网络编程之Socket套接字介绍,套接字工作流程,基于TCP协议的套接字程序] 为何学习socket套接字一定要先学习互联网协议: 1.首先:要想开发一款自己的C/S架构软件,就必须掌握socket ...

随机推荐

  1. luogu 4345 Lucas的变形应用

    求 sigma i由0-k C(n,i) 利用Lucas定理+整除分块将C(n/p,i/p)利用i/p分块,得到k/p-1个整块(p-1)和一个小块(k%p) 最后得到式子 F(n,k)=F(n/p, ...

  2. 「CTSC2018」暴力写挂

    毫无$ Debug$能力 全世界就我会被卡空间.jpg LOJ #2553 UOJ #400 Luogu P4565 题意 给定两棵树$ T,T'$,求一组点对$ (x,y)$使得$deep(x)+d ...

  3. 两个Html页面之间值得传递

    传值的页面:<a href='stockProductInfo.html?prdId="+v.prdID+"' target='_blank'></html> ...

  4. ModuleNotFoundError: No module named '_sqlite3' -- python2.7 问题

    ModuleNotFoundError: No module named '_sqlite3' 运行python 工程出现上面这个问题,以为python安装中缺少这个依赖, 注python 2.7 首 ...

  5. django drf 基础学习3

    一 简述 这里来谈下一些基本原理 二 汇总 1 restful规范 1 根据method不同做不同的操作          request.method='          get(获取) 返回完整 ...

  6. Python学习笔记-Linux下安装Python

    Linux系统CentOS 1.安装依赖组件 yum install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel s ...

  7. perl 之 正则表达式 (简)

    正则表达式,简单介绍: 元字符 匹配项 字符类:单字符与数字   . 匹配除换行符之外的任意字符 [a-z0-9] 匹配集中任意单字符 [^a-z0-9] 匹配不在集合中的任意单字符 \d 匹配单个数 ...

  8. 【Hibernate】could not instantiate class.. from tuple] with root cause

    使用hibernate的过程中出现了这个问题,查询语句如下: String hql = "select new GoodsBean(id, name, price, proPic, sale ...

  9. Jedis

    需要把jedis依赖的jar包添加到工程中 连接单机版 // 第一步:创建一个Jedis对象.需要指定服务端的ip及端口. Jedis jedis = new Jedis("192.168. ...

  10. appJSON["window"]["navigationBarTextStyle"] 字段需为 black 或 white

    appJSON["window"]["navigationBarTextStyle"] 字段需为 black 或 white     改动成这个就可以了 &qu ...