Python Socket TCP双端聊天功能实现过程详解


Posted in Python onJune 15, 2020

SOCKET编程

  • socket(套接字):是一个网络通信的端点,能实现不同主机的进程通信, -通过IP+端口定位对方并发送消息的通信机制
  • 分为UDP和TCP
  • 客户端Client: 发起访问的一-方
  • 服务器端Server: 接受访问的一方

UDP编程

Server端流程

1.建立socket,socket是负贵具体通信的一个实例

2.绑定,为创建的socket指派固定的端口和ip地址

3.接受对方发送内容

4.给对方发送反馈,此步骤为非必须步骤

Client端流程

1.建立通信的socket

2.发送内容到指定服务器

3.接受服务器给定的反馈内容

  • 服务器案例v01
  • 客户端案例v02
  • 服务器程序要求永久运行,一般用死循环处理
  • 改造的服务器版本v03

TCP编程

  • 面向连接的传输,即每次传输之前需要建立一个连接
  • 客户端和服务端两个程序需要编写

Server端的编写流程

1.建立Socket负责具体通信。这个socket其实只负责接受对方的请求

2.绑定端口和地址

3.监听接入的访问Socket

4.接受访问的Socket,可以理解接受访问即建立了一个通讯的链路通路

5.接受对方的发送内容,利用接收到的Socket接受内容

6.如果有必要,给对方发送反馈信息

7.关闭链路通路

Client端流程

1.建立通信socket

2.链接对方,请求跟对方建立通路

3.发送内容到对方服务器

4.接受对方的反馈

5.关闭链接通路

Server端:

import socket

def tcp_server():
  # 1、建立socket负责具体通信,这个和socket其实只负责接受对方的请求,真通信的是连接后
  # socket.AF_INET:使用ipv4协议
  # socket.SOCK_STREAM:使用tcp连接
  sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
  # 2、绑定IP以及端口
  addr = ("192.168.200.2", 1914)
  sock.bind(addr)
  # 3、监听接入的访问socket
  sock.listen()

  while True:
    # 4、接受访问的Socket 可以理解接受访问即建立了一个通讯的连接通路
    # accept 返回的元祖第一个元素赋值给SKT,利用接受到的socket接受内容
    skt, addr = sock.accept() # 建立通道
    # 5、接受对方发送的内容、利用接受到的socket接受内容
    # 500 表示接受使用的buffersize
    # mgs = skt.receive(500)
    mgs = skt.recv(500)
    # 接受到的是bytes格式内容
    # 想得到str格式的,需要进行解码
    msg = mgs.decode()
    print(msg)
    data = f'我已经收到了'
    # print(data)
    # 6、如果有必要、给对方反馈信息
    skt.send(data.encode())
    skt.close()
if __name__ == '__main__':
  print("tcpstaring......")
  tcp_server()
  print("tcpstoping......")

client端

import socket


def tcp_client():
  a = 0
  while a < 100:
    # 1、建立通信socket
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    addr = ("192.168.200.2", 1914)
    sock.connect(addr)
    data = f"{a}你好 我是client,你收到了么?"
    sock.send(data.encode())
    rst = sock.recv(500)
    print(rst.decode())
    sock.close()
    a+=1

if __name__ == '__main__':
  tcp_client()

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
Python实现获取某天是某个月中的第几周
Feb 11 Python
在Python的Django框架中使用通用视图的方法
Jul 21 Python
使用XML库的方式,实现RPC通信的方法(推荐)
Jun 14 Python
Python实现统计代码行的方法分析
Jul 12 Python
Python数字图像处理之霍夫线变换实现详解
Jan 12 Python
pycharm设置注释颜色的方法
May 23 Python
python读取txt文件并取其某一列数据的示例
Feb 19 Python
基于python3 的百度图片下载器的实现代码
Nov 05 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
Django使用django-simple-captcha做验证码的实现示例
Jan 07 Python
用Python将GIF动图分解成多张静态图片
Jun 11 Python
Python实现验证码识别
Jun 15 #Python
Python Tkinter图形工具使用方法及实例解析
Jun 15 #Python
使用Keras画神经网络准确性图教程
Jun 15 #Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
Jun 15 #Python
python中元组的用法整理
Jun 15 #Python
详解Python设计模式之策略模式
Jun 15 #Python
python能做哪方面的工作
Jun 15 #Python
You might like
用PHP 快速生成 Flash 动画的方法
2007/03/06 PHP
tp5(thinkPHP5)框架连接数据库的方法示例
2018/12/24 PHP
php策略模式简单示例分析【区别于工厂模式】
2019/09/25 PHP
JavaScript常用全局属性与方法记录积累
2013/07/03 Javascript
jquery等宽输出文字插件使用介绍
2013/09/18 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
举例简介AngularJS的内部语言环境
2015/06/17 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
JS面试题---关于算法台阶的问题
2016/07/26 Javascript
详解vue 数据传递的方法
2018/04/19 Javascript
vue升级之路之vue-router的使用教程
2018/08/14 Javascript
深入浅析js原型链和vue构造函数
2018/10/25 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
JS中准确判断变量类型的方法
2020/06/01 Javascript
纯Python开发的nosql数据库CodernityDB介绍和使用实例
2014/10/23 Python
python开发环境PyScripter中文乱码问题解决方案
2016/09/11 Python
基于Python函数的作用域规则和闭包(详解)
2017/11/29 Python
Python I/O与进程的详细讲解
2019/03/08 Python
解决Python安装时报缺少DLL问题【两种解决方法】
2019/07/15 Python
python 修改本地网络配置的方法
2019/08/14 Python
Python下应用opencv 实现人脸检测功能
2019/10/24 Python
使用Python实现画一个中国地图
2019/11/23 Python
python 基于卡方值分箱算法的实现示例
2020/07/17 Python
Canvas环形饼图与手势控制的实现代码
2019/11/08 HTML / CSS
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
泰国Robinson百货官网:购买知名品牌的商品
2020/02/08 全球购物
北美最大的参茸药食商城:德成行
2020/12/06 全球购物
介绍一下Mysql的存储引擎
2015/02/12 面试题
2014年人力资源部工作总结
2014/11/19 职场文书
生日寿星公答谢词
2015/09/29 职场文书
优秀团员主要事迹材料
2015/11/05 职场文书
2019年大学生职业生涯规划书最新范文
2019/03/25 职场文书
预备党员入党思想汇报(范文)
2019/08/14 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python
python神经网络ResNet50模型
2022/05/06 Python