【python】TCP协议编程
TCP协议适用于对效率要求相对较低而准确性要求很高的场合,例如文件传输、电子邮件等等,需要建立连接、数据传输、断开连接三个步骤。
例:TCP通信程序。模拟机器人聊天软件原理,服务端提前建立好字典,然后根据接收到的内容自动回复。
客户端代码chatClient.py
import socket
import sys# 服务端主机IP地址和端口号
HOST = '127.0.0.1'
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:# 连接服务器s.connect((HOST, PORT))
except Exception as e:print('Server not found or not open')sys.exit()while True:c = input('Input the content you want to send:')# 发送数据s.sendall(c.encode())# 从服务端接收数据data = s.recv(1024).decode()print('Received:', data)if c.lower() == 'bye':break
# 关闭连接
s.close()
服务器端代码chatServer.py
import socket
from os.path import commonprefixwords = {'how are you?':'Fine,thank you.','how old are you?':'38','what is your name?':'Dong FuGuo',"what's your name?":'Dong FuGuo','where do you work?':'University','bye':'Bye'}HOST = ''
PORT = 50007
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定socket
s.bind((HOST, PORT))
# 开始监听一个客户端连接
s.listen(1)
print('Listening on port:',PORT)conn, addr = s.accept()
print('Connected by', addr)
# 开始聊天
while True:data = conn.recv(1024).decode()if not data:breakprint('Received message:', data)# 尽量猜测对方要表达的真正意思m = 0key = ''for k in words.keys():# 删除多余的空白字符data = ' '.join(data.split())# 与某个“键”非常接近,就直接返回if len(commonprefix([k, data])) > len(k)*0.7:key = kbreak# 使用选择法,选择一个重合度较高的“键”length = len(set(data.split())&set(k.split()))if length > m:m = lengthkey = k# 选择合适的信息进行回复conn.sendall(words.get(key, 'Sorry.').encode())
conn.close()
s.close()
先运行chatServer.py,监听客户端连接
然后在dos窗口中,打开 chatClient.py所在的文件夹,输入python chatClient.py +(发送内容)回车,完成发送数据。
启动一个命令提示符环境并运行服务端程序,服务端开始监听;启动一个新的命令提示符环境并运行客户端程序,服务端提示连接已建立;在客户端输入要发送的信息后,服务端会根据提前建立的字典来自动回复。服务端每次都在固定的端口进行监听,而客户端每次建立连接时可能会使用不同的端口。如果服务端程序没有运行,那么客户端就无法建立连接,当然也无法发送任何信息,这正是TCP协议区别于UDP协议的地方。
【python】TCP协议编程相关推荐
- 异常处理、socke基于TCP协议编程
一.异常处理 1.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误过不了Python解释器的语法检测,必须在程序执行前改正) #语法错误示范一 if#语法错误示范二 def ...
- Visual C#TCP协议编程
Visual C#TCP协议编程 Visual C# TCP协议编程基础 TCP协议层次结构 TCP协议规范 TCP协议相关类简介 TcpListener TcpClient NetworkStrea ...
- 【转/TCP协议编程】 基于TCP的Socket 编程
基于TCP(面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)向服务器发出连接请求(connect) (3)和服务器端进行通信(send ...
- python tcp协议_python 网络编程 -- Tcp协议
Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 ...
- python tcp协议加代理_python实现简单的TCP代理服务器
本文实例讲述了python实现简单的TCP代理服务器的方法,分享给大家供大家参考. 具体实现代码如下: # -*- coding: utf-8 -*- ''' filename:rtcp.py @de ...
- 00023.11 TCP协议编程:群聊(TCP通信原理,多线程、线程阻塞)
系列文章目录 文章目录 系列文章目录 一.前言 一.需求 二.使用步骤 客户端 服务端 三.完整代码 客户端 服务器 一.前言 我们平时玩QQ或者微信的群聊,是怎么实现的呢? 是你发一个消息直接全部给 ...
- 基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)
前注:ARM端的TCP协议编程步骤和UDP协议编程步骤完全相同,只是在ARM端的C代码实现不同,在本次TCP协议实现过程中我们主要利用了官方提供的Demo,然后根据自己的需要加以改写,具体过程如下. ...
- python网络安全协议_python网络安全
广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 让您快速获取腾讯云 tbaas 产品 python sdk 并开始调用. 依赖环 ...
- android 网络通信方式,Android中基于TCP协议的网络通信
一.Android网络简介 Android与服务器的通信方式主要有两种,一种是Http通信,另一种是Socket通信. HTTP通信:Android中内置HttpClient,这样可以发方便的发送Ht ...
- python 网络编程 套接字的初使用 基于TCP协议的socket
文章目录 基于TCP协议的socket server端 client端 尝试启动 基于TCP协议的socket tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 server端 # ...
最新文章
- 根据特殊实体业务,实现自定义排序
- 盘点丨那些顶级的AI机器人“大脑”
- Python:使用ctypes库调用外部DLL 数据类型对应
- Subversion基本操作
- 如果可能我们还是做好基础的事情吧
- huawei hardware questions
- Oracle Data Gurad Physical Standby 相关说明
- 今天在海淀黄庄地铁站真实经历 写下来希望我的好友可以看一下!
- CTR深度学习模型之 DIEN(Deep Interest Evolution Network) 的理解与示例
- SAP Leonardo机器学习如何获取模型存储的实际地址
- 很好用的ISO制作软件
- mysql error nr.2003_[MySQL]在安装windows版MySQL时遇到过如下问题Error Nr.1045和Error.Nr.2003,相应解决办法如下...
- java 对象结构_java对象的结构
- ZooKeeper官方文档学习笔记02-ZooKeeper入门指南
- Unity与 DLL文件 ☀️| 怎样使用 C# 类库 生成一个DLL文件 并 调用!
- 3万一5万新能源电动汽车,3万内的新能源电动轿车
- java中nextToken,Java StringTokenizer nextToken()用法及代碼示例
- HTML / CSS 实践练习
- Android TTS 支持中文
- VR学习(Demo)以及在Unity3D上的项目
热门文章
- java 去除敏感词
- 海康—SADP激活(设备网络搜索)
- 机器学习实战之路—— 1 线性回归 (二)
- 国二考试c语言考场能炒么,国2考试题_计算机国二office高级应用考试的题目是从题库20套里抽其中一套还是别的题目_淘题吧...
- 线程安全的几种单例模式
- Android OpenCv实现拍照搜题功能实现步骤
- html5总结2000字,建筑识图实训总结2000字6篇范文
- mac地址对应的厂商
- g4600黑苹果efi_在黑苹果系统下挂载和打开EFI(ESP)分区
- python-louvain