基本的逻辑步骤

  1. 确定通信的客户端和服务端
  2. 建立通信连接
  3. 进行通信
  4. 通信断开

Python中TCP通信

网卡

使得用户通过电缆或无线相互连接,在网卡上都有一个独一无二的mac地址。这是IEEE负责为网络接口控制器分配唯一的mac地址

IP协议

负责将数据从一台计算机发送到另一台计算机

端口

在两台计算机通信时,因为同一台计算机上可能跑多个网络程序(QQ,微信),端口用来区分IP报文来了之后发送给那一个网络程序

套接字

具体的讲解: [link](socket编程入门:1天玩转socket通信技术(非常详细) http://c.biancheng.net/socket/).
自己的理解: 在Python面向对象编程中通过套接字建立一个网络连接,对应一个网络,然后进一步的实现网络间的通信

Python中socket使用
具体的连接: link.

服务端

步骤:
(1) 服务端先创建一个套接字对象
(2)服务端socket将自己绑定在指定的ip地址和端口上
(3)服务端socket调用listen()方法监听网络
(4)程序采用循环不断调用socket的accep()方法接收来自客户端的连接

import socket
import threading
import timedef tcplink(sock,addr):print('accept new connection from %s:%s...'%addr)sock.send(b'Welcome!')while True:data = sock.recv(1024)time.sleep(1)if not data or data.decode('utf-8')=='exit':breaksock.send(('Hello,%s!'%data.decode('utf-8')).encode('utf-8'))sock.close()print('Connectiong from %s:%s closed '%addr)
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind(('127.0.0.1',9999))
# 监听端口
s.listen(5)
print('Waiting for connection....')
# 服务器程序通过一个永久循环接收客户端的连接
while True:# 接收一个新链接sock,addr = s.accept()# 创建新线程来处理TCP连接t = threading.Thread(target=tcplink,args=(sock,addr))t.start()

客户端

(1)建立socket对象
(2)使用socket的conne()函数建立与服务器的连接
(3)Socket函数实现接收通信

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 建立连接
s.connect(('127.0.0.1',9999))
# 接收欢迎消息
print(s.recv(1024).decode('utf-8'))
for data in [b'Michael',b'Tracy',b'Sarah']:# 发送数据s.send(data)print(s.recv(1024).decode('utf-8'))
s.send(b'exit')
s.close()

python的TCP编程相关推荐

  1. python gui界面 tcp_通过python实现TCP编程

    伪代码: ss = socket() #创建服务器套接字 ss.bind() #把地址绑定到套接字上 ss.listen() #监听连接(最大连接数) info_loop: #服务器无限循环 cs = ...

  2. Python tcp编程,TCP服务端和TCP客户端代码编写

    Python网络编程 两种模式: 一种tcp可靠连接,能够保证数据不丢失 一种udp 不关心数据是否会丢失,在乎传输效率 TCP编程 一点:服务端 二点:客户端 客户端如何连接服务端,保证传输的数据可 ...

  3. python之网络编程 --- TCP编程

    Python的第三方库非常强大,简单易用,简直不要太爽. 首先看一下TCP编程 TCP的服务模型包括面向连接的服务和可靠数据传输服务,首先要进行三次握手,建立全双工连接,连接双方的进程可以在此连接上同 ...

  4. Python之网络编程(TCP套接字与UDP套接字)

    文章目录 基于tcp的套接字 实现目标 tcp服务端源码 tcp客户端源码 tcp效果实现 基于udp的套接字 udp作用介绍 udp服务端源码 udp客户端源码 udp效果实现 用udp实现一个时间 ...

  5. Python之TCP Socket网络编程

    0 背景 Socket 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的,例如我们每天浏览网 ...

  6. PYTHON黑帽编程1.5 使用WIRESHARK练习网络协议分析

    Python黑帽编程1.5  使用Wireshark练习网络协议分析 1.5.0.1  本系列教程说明 本系列教程,采用的大纲母本为<Understanding Network Hacks At ...

  7. Python基础-socket编程

    一.网络编程 自从互联网诞生以来,现在基本上所有的程序都是网络程序,很少有单机版的程序了. 计算机网络就是把各个计算机连接到一起,让网络中的计算机可以互相通信.网络编程就是如何在程序中实现两台计算机的 ...

  8. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

  9. PYTHON黑帽编程 4.1 SNIFFER(嗅探器)之数据捕获(下)

    上一节(<4.1 SNIFFER(嗅探器)之数据捕获(上)>)中, 我们讲解了通过Raw Socket的方式来编写Sniffer的基本方法. 本节我们继续来编写Sniffer,只不过使用现 ...

最新文章

  1. 70页论文,图灵奖得主Yoshua Bengio一作:“生成流网络”拓展深度学习领域
  2. Windows7 连接Windows Server服务器时提示:计算机无法连接到远程计算机上的另一个控制台会话。...
  3. 使用Elasticsearch+filebeat+logstach+kibana构建日志服务平台
  4. Ubuntu18常用指令集合(更新中)
  5. GCC 关键字inline探究
  6. 蒙文字体怎么安装_焘哥带你玩转字体(三)字体的安装及显示问题
  7. mysql 开发进阶篇系列 41 mysql日志之慢查询日志
  8. C++中模板使用详解
  9. 太强了,300分钟撸一个基于redis的亿级用户高并发系统
  10. 30-Python3 正则表达式
  11. mybatis中获取当前时间_Mybatis获取当前数据库时间
  12. Android Studio 之 Live Templates 使用
  13. mysql索引数据结构图解_干货:mysql索引的数据结构
  14. 设置div中的背景颜色及div中的字体颜色
  15. 目前最火热的创新创业项目有哪些?
  16. GIT提交代码到远程创库
  17. 手机银行消息服务器,服务与功能_手机银行_服务介绍_个人电子银行_电子银行频道_建设银行...
  18. u8显示服务器资源不足,系统提示“虚拟内存不足”的原因及解决方法
  19. 推荐系统遇上深度学习(十二)--推荐系统中的EE问题及基本Bandit算法
  20. HTML5期末大作业:影评网站的设计--豆瓣以及IMDb等影评网站

热门文章

  1. WEB攻击手段及防御第2篇-SQL注入
  2. 有关Gradle Network is unreachable: connect的报错
  3. iOS9中如何在日历App中创建一个任意时间之前开始的提醒(一)
  4. IDP申请直到软件上架流程 - iOS
  5. 如何解决资料下载下来为index.html和PHP文件的问题?
  6. 2021年中国工业互联网安全大赛核能行业赛道writeup之usb流量分析
  7. 【转载】Pytorch在加载模型参数时指定设备
  8. linux进行主机发现,linux – 网络上所有计算机的主机名发现
  9. 使用Tape和Vue Test Utils编写快速的Vue单元测试
  10. 我在CSDN的第一个1024