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程序设计入门(3)数组的使用
Jun 16 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
django文档学习之applications使用详解
Jan 29 Python
对numpy中轴与维度的理解
Apr 18 Python
python中pip的安装与使用教程
Aug 10 Python
Python实现的括号匹配判断功能示例
Aug 25 Python
python pytest进阶之conftest.py详解
Jun 27 Python
python+selenium select下拉选择框定位处理方法
Aug 24 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python连接Impala实现步骤解析
Aug 04 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 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
smarty模板局部缓存方法使用示例
2014/06/17 PHP
PHP文件缓存内容保存格式实例分析
2014/08/20 PHP
php采集自中央气象台范围覆盖全国的天气预报代码实例
2015/01/04 PHP
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
JS实现带有抽屉效果的产品类网站多级导航菜单代码
2015/09/15 Javascript
javascript特殊日历控件分享
2016/03/07 Javascript
Vue.JS入门教程之处理表单
2016/12/01 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
vue中element 上传功能的实现思路
2018/07/06 Javascript
解决vuejs 使用value in list 循环遍历数组出现警告的问题
2018/09/26 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
2018/11/04 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
为什么Vue3.0使用Proxy实现数据监听(defineProperty表示不背这个锅)
2019/10/14 Javascript
在Python中操作日期和时间之gmtime()方法的使用
2015/05/22 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Python语言的面相对象编程方式初步学习
2016/03/12 Python
浅谈Python中函数的参数传递
2016/06/21 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
python如何通过pyqt5实现进度条
2020/01/20 Python
python 实现控制鼠标键盘
2020/11/27 Python
css3实现的多级渐变下拉菜单导航效果代码
2015/08/31 HTML / CSS
微信端html5页面调用分享接口示例
2018/03/14 HTML / CSS
元旦晚会上单位领导演讲稿
2014/01/05 职场文书
中式婚礼主持词
2014/03/13 职场文书
遗嘱公证书标准样本
2014/04/08 职场文书
公务员培的训心得体会
2014/09/01 职场文书
计划生育证明书写要求
2014/09/17 职场文书
普通党员自我剖析材料
2014/10/07 职场文书
教师学习三严三实心得体会
2014/10/13 职场文书
幼儿教师年度个人总结
2015/02/05 职场文书
贪污检举信范文
2015/03/02 职场文书
2015员工年度考核评语
2015/03/25 职场文书
小学生读书笔记
2015/07/01 职场文书
2016国庆节活动宣传语
2015/11/25 职场文书
党组织结对共建协议书
2016/03/23 职场文书