python3实现TCP协议的简单服务器和客户端案例(分享)
作者:jingxian 发布时间:2023-01-11 13:11:21
标签:python,客户端,服务器
利用python3来实现TCP协议,和UDP类似。UDP应用于及时通信,而TCP协议用来传送文件、命令等操作,因为这些数据不允许丢失,否则会造成文件错误或命令混乱。下面代码就是模拟客户端通过命令行操作服务器。客户端输入命令,服务器执行并且返回结果。
TCP(Transmission Control Protocol 传输控制协议):是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。
TCP客户端
from socket import *
host = '192.168.48.128'
port = 13141
addr = (host,port)
bufsize=1024
tcpClient = socket(AF_INET,SOCK_STREAM) # 这里的参数和UDP不一样。
tcpClient.connect(addr) #由于tcp三次握手机制,需要先连接
while True:
data = input('>>> ').encode(encoding="utf-8")
if not data:
break
# 数据收发和UDP基本一致
tcpClient.send(data)
data = tcpClient.recv(bufsize).decode(encoding="utf-8")
print(data)
tcpClient.close()
TCP客户端
from socket import *
from time import ctime
import os
host = ''
port = 13140
bufsize = 1024
addr = (host,port)
tcpServer = socket(AF_INET,SOCK_STREAM)
tcpServer.bind(addr)
tcpServer.listen(5) #这里设置监听数为5(默认值),有点类似多线程。
while True:
print('Waiting for connection...')
tcpClient,addr = tcpServer.accept() #拿到5个中一个监听的tcp对象和地址
print('[+]...connected from:',addr)
while True:
cmd = tcpClient.recv(bufsize).decode(encoding="utf-8")
print(' [-]cmd:',cmd)
if not cmd:
break
###这里在cmd中执行来自客户端的命令,并且将结果返回###
cmd = os.popen(cmd) ###os.popen(cmd)对象是file对象子类,所以可以file的方法
cmdResult = cmd.read()
cmdStatus = cmd.close()
#################################################
data = cmdResult if (not cmdStatus) else "ERROR COMMAND"
tcpClient.send(data.encode(encoding="utf-8"))
tcpClient.close() #
print(addr,'End')
tcpServer.close() #两次关闭,第一次是tcp对象,第二次是tcp服务器
0
投稿
猜你喜欢
- 一、oracle oracle服务器有Oracle instace 和Oracle database instance有memory str
- 本文实例讲述了让thinkphp支持大小写url地址访问的方法。分享给大家供大家参考。具体实现方法如下:通常ThinkPHP默认是区别大小写
- 1.Airbus Ship Detection Challengeurl: https://www.kaggle.com/comp
- 1.cv2.threshold()参数说明cv2.threshold(src, thresh, maxval, type[, dst]) &
- 本文实例讲述了Python实现二叉树及遍历方法。分享给大家供大家参考,具体如下:介绍:树是数据结构中非常重要的一种,主要的用途是用来提高查找
- 本文主要研究的是flask如何截获所有访问,以及before_request、after_request修饰器的相关内容,具体如下。在学习着
- 前言Python中的 True和 False总是让人困惑,一不小心就会用错,本文总结了三个易错点,分别是逻辑取反、if条件式和pandas.
- 摘要主要是介绍python 的回调函数callback。什么是回调函数当程序运行是,一般情况下,应用程序会时常通过API调用库里所预先备好的
- 一、命名元祖在python基础中, 我们学习元祖的时候,取元祖内部的元素都是通过索引来进行取值的。但是这种取值方式不够友好, 所以我们引入命
- 本文实例讲述了Python实现读取Properties配置文件的方法。分享给大家供大家参考,具体如下:JAVA本身提供了对于Properti
- Yahoo发布了一款基于FireFox的插件,名叫YSlow,这个插件可以分析网站的页面,并告诉你为了提高网站性能,如何基于某些规则而进行优
- 1.导入依赖包import ( "github.com/spf13/viper")2.编写ya
- 问题怎样实现一个按优先级排序的队列? 并且在这个队列上面每次 pop 操作总是返回优先级最高的那个元素解决方案下面的类利用 heapq 模块
- 今天分享 3 个 Python 编程小技巧,来看看你是否用过?1、如何按照字典的值的大小进行排序我们知道,字典的本质是哈希表,本身是无法排序
- 总的来说视觉设计是一个很大的范畴,囊括了我们身边很多产品的再创作设计,比如工业产品设计,广告设计,新媒体设计,服饰设计,还有我们这里要讨论的
- 循环写入字典key、value、删除指定的键值对:原文本‘jp_url.txt'每行元素以逗号分隔:host_key,product
- 本文实例讲述了Python实现将HTML转换成doc格式文件的方法。分享给大家供大家参考,具体如下:网页上的一些文章,因为有格式的原因,它们
- Msg 102, Level 15, State 1, Line 3 Incorrect syntax near '+'.
- 一、导入所需的库import turtleimport randomfrom math import *二、生成斐波那契数列斐波那契数列是指
- Python 使用tf-idf算法计算文档关键字权重,并生成词云1. 根据tf-idf计算一个文档的关键词或者短语:代码如下:注意需要安装p