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协议编程相关推荐

  1. 异常处理、socke基于TCP协议编程

    一.异常处理 1.错误和异常 1.程序中难免出现错误,而错误分成两种 (1)语法错误(这种错误过不了Python解释器的语法检测,必须在程序执行前改正) #语法错误示范一 if#语法错误示范二 def ...

  2. Visual C#TCP协议编程

    Visual C#TCP协议编程 Visual C# TCP协议编程基础 TCP协议层次结构 TCP协议规范 TCP协议相关类简介 TcpListener TcpClient NetworkStrea ...

  3. 【转/TCP协议编程】 基于TCP的Socket 编程

    基于TCP(面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)向服务器发出连接请求(connect) (3)和服务器端进行通信(send ...

  4. python tcp协议_python 网络编程 -- Tcp协议

    Socket是网络编程的一个抽象概念.通常我们用一个Socket表示"打开了一个网络链接",而打开一个Socket需要知道目标计算机的IP地址和端口号,再指定协议类型即可. 客户端 ...

  5. python tcp协议加代理_python实现简单的TCP代理服务器

    本文实例讲述了python实现简单的TCP代理服务器的方法,分享给大家供大家参考. 具体实现代码如下: # -*- coding: utf-8 -*- ''' filename:rtcp.py @de ...

  6. 00023.11 TCP协议编程:群聊(TCP通信原理,多线程、线程阻塞)

    系列文章目录 文章目录 系列文章目录 一.前言 一.需求 二.使用步骤 客户端 服务端 三.完整代码 客户端 服务器 一.前言 我们平时玩QQ或者微信的群聊,是怎么实现的呢? 是你发一个消息直接全部给 ...

  7. 基于ZYNQ-7000的AI加速器设计之PS端(ARM)网络编程(TCP协议)

    前注:ARM端的TCP协议编程步骤和UDP协议编程步骤完全相同,只是在ARM端的C代码实现不同,在本次TCP协议实现过程中我们主要利用了官方提供的Demo,然后根据自己的需要加以改写,具体过程如下. ...

  8. python网络安全协议_python网络安全

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 让您快速获取腾讯云 tbaas 产品 python sdk 并开始调用. 依赖环 ...

  9. android 网络通信方式,Android中基于TCP协议的网络通信

    一.Android网络简介 Android与服务器的通信方式主要有两种,一种是Http通信,另一种是Socket通信. HTTP通信:Android中内置HttpClient,这样可以发方便的发送Ht ...

  10. python 网络编程 套接字的初使用 基于TCP协议的socket

    文章目录 基于TCP协议的socket server端 client端 尝试启动 基于TCP协议的socket tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端 server端 # ...

最新文章

  1. 根据特殊实体业务,实现自定义排序
  2. 盘点丨那些顶级的AI机器人“大脑”
  3. Python:使用ctypes库调用外部DLL 数据类型对应
  4. Subversion基本操作
  5. 如果可能我们还是做好基础的事情吧
  6. huawei hardware questions
  7. Oracle Data Gurad Physical Standby 相关说明
  8. 今天在海淀黄庄地铁站真实经历 写下来希望我的好友可以看一下!
  9. CTR深度学习模型之 DIEN(Deep Interest Evolution Network) 的理解与示例
  10. SAP Leonardo机器学习如何获取模型存储的实际地址
  11. 很好用的ISO制作软件
  12. mysql error nr.2003_[MySQL]在安装windows版MySQL时遇到过如下问题Error Nr.1045和Error.Nr.2003,相应解决办法如下...
  13. java 对象结构_java对象的结构
  14. ZooKeeper官方文档学习笔记02-ZooKeeper入门指南
  15. Unity与 DLL文件 ☀️| 怎样使用 C# 类库 生成一个DLL文件 并 调用!
  16. 3万一5万新能源电动汽车,3万内的新能源电动轿车
  17. java中nextToken,Java StringTokenizer nextToken()用法及代碼示例
  18. HTML / CSS 实践练习
  19. Android TTS 支持中文
  20. VR学习(Demo)以及在Unity3D上的项目

热门文章

  1. java 去除敏感词
  2. 海康—SADP激活(设备网络搜索)
  3. 机器学习实战之路—— 1 线性回归 (二)
  4. 国二考试c语言考场能炒么,国2考试题_计算机国二office高级应用考试的题目是从题库20套里抽其中一套还是别的题目_淘题吧...
  5. 线程安全的几种单例模式
  6. Android OpenCv实现拍照搜题功能实现步骤
  7. html5总结2000字,建筑识图实训总结2000字6篇范文
  8. mac地址对应的厂商
  9. g4600黑苹果efi_在黑苹果系统下挂载和打开EFI(ESP)分区
  10. python-louvain