加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

Python 绝技 —— TCP 服务器与客户端

发布时间:2019-08-29 16:53:06 所属栏目:业界 来源:ciphersaw
导读:0x00 媒介 本文先先容因特网的焦点协议 TCP ,再以 Python 的 socket 模块为例先容收集套接字,最后给出 TCP 处事器与客户端的 Python 剧本,并演示两者之间的通讯进程。 0x01 TCP 协议 TCP(Transmission Control Protocol,传输节制协议)是一种面向毗连、

单处事器 VS 单客户端

Python 特技 —— TCP 处事器与客户端

  1. 在个中一个 PowerShell 中运行呼吁 python3 ./tcp_server.py,处事器表现 Waiting for connection...,并监听当田主机的 TCP 6000 端口,进入守候毗连状态;
  2. 在另一个 PowerShell 中运行呼吁 python3 ./tcp_client.py,处事器表现 Accept new connection from 127.0.0.1:42101,完成与当田主机的 TCP 42101 端口成立通讯毗连,并向客户端发送接待信息与扣问信息,客户端吸取到信息后打印输出;
  3. 若客户端向处事器发送字符串 Alice 与 Bob,则收随处事器的问候相应信息;
  4. 若客户端向处事器发送空字符串,则被要求从头输入;
  5. 若客户端向处事器发送字符串 exit,则收随处事器的竣事相应信息;
  6. 客户端与处事器之间的通讯毗连已封锁,处事器表现 Connection from 127.0.0.1:42101 is closed,并继承监听客户端的毗连哀求。

单处事器 VS 多客户端

Python 特技 —— TCP 处事器与客户端

  1. 在个中一个 PowerShell 中运行呼吁 python3 ./tcp_server.py,处事器表现 Waiting for connection...,并监听当田主机的 TCP 6000 端口,进入守候毗连状态;
  2. 在另三个 PowerShell 中别离运行呼吁 python3 ./tcp_client.py,处事器同时与当田主机的 TCP 42719、42721、42722 端口成立通讯毗连,并别离向客户端发送接待信息与扣问信息,客户端吸取到信息后打印输出;
  3. 三台客户端别离向处事器发送字符串 Client1、Client2、Client3,并收随处事器的问候相应信息;
  4. 全部客户端别离向处事器发送字符串 exit,并收随处事器的竣事相应信息;
  5. 全部客户端与处事器之间的通讯毗连已封锁,处事器继承监听客户端的毗连哀求。

0x06 Python API Reference

socket 模块

本节先容上述代码顶用到的内建模块 socket,是 Python 收集编程的焦点模块。

socket() 函数

socket() 函数用于建设收集通讯中的套接字工具。函数原型如下:

  1. socket.socket(family=AF_INET, type=SOCK_STREAM, proto=0, fileno=None) 
  • family 参数代表地点族(Address Family),默认值为 AF_INET,用于 IPv4 收集通讯,常用的尚有 AF_INET6,用于 IPv6 收集通讯。family 参数的可选值取决于本机操纵体系。
  • type 参数代表套接字的范例,默认值为 SOCK_STREAM,用于 TCP 协议(面向毗连)的收集通讯,常用的尚有 SOCK_DGRAM,用于 UDP 协议(无毗连)的收集通讯。
  • proto 参数代表套接字的协议,默认值为 0,一样平常忽略该参数,除非 family 参数为 AF_CAN,则 proto 参数需配置为 CAN_RAW 或 CAN_BCM。
  • fileno 参数代表套接字的文件描写符,默认值为 None,若配置了该参数,则其他三个参数将会被忽略。

建设完套接字工具后,需行使工具的内置函数完成收集通讯进程。留意,以下函数原型中的「socket」是指 socket 工具,而不是上述的 socket 模块。

bind() 函数

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读