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局部赋值的规则
Mar 07 Python
详解Python中的__init__和__new__
Mar 12 Python
python生成器表达式和列表解析
Mar 10 Python
使用Python绘制图表大全总结
Feb 11 Python
使用Python开发SQLite代理服务器的方法
Dec 07 Python
python3.4 将16进制转成字符串的实例
Jun 12 Python
python读取.mat文件的数据及实例代码
Jul 12 Python
Python3.7安装keras和TensorFlow的教程图解
Jun 18 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
Django如何使用jwt获取用户信息
Apr 21 Python
Python常用外部指令执行代码实例
Nov 05 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 02 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+FCKeditor新闻系统)
2007/01/02 PHP
ThinkPHP3.1.3版本新特性概述
2014/06/19 PHP
PHP生成静态HTML页面最简单方法示例
2015/04/09 PHP
改版了网上的一个js操作userdata
2007/04/27 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
html页面显示年月日时分秒和星期几的两种方式
2013/08/20 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
javascript获取checkbox复选框获取选中的选项
2014/08/12 Javascript
深入分析Cookie的安全性问题
2015/03/01 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
jquery带翻页动画的电子杂志代码分享
2015/08/21 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
JavaScript简单实现合并两个Json对象的方法示例
2017/10/16 Javascript
微信小程序用户自定义模版用法实例分析
2017/11/28 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
2018/03/29 Javascript
vue-cli3+ts+webpack实现多入口多出口功能
2019/05/30 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
[02:56]《DAC最前线》之国外战队抵达上海备战亚洲邀请赛
2015/01/28 DOTA
[00:32]2018DOTA2亚洲邀请赛出场——VP
2018/04/04 DOTA
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
详解pandas的外部数据导入与常用方法
2019/05/01 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python While循环语句实例演示及原理解析
2020/01/03 Python
对Tensorflow中tensorboard日志的生成与显示详解
2020/02/04 Python
keras Lambda自定义层实现数据的切片方式,Lambda传参数
2020/06/11 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
阿迪达斯意大利在线商店:adidas意大利
2016/09/19 全球购物
澳大利亚婴儿礼品公司:The Baby Gift Company
2018/11/04 全球购物
大学生毕业自我鉴定
2013/11/06 职场文书
面试后的感谢信范文
2014/02/01 职场文书
2014年英语教师工作总结
2014/12/03 职场文书
Springboot集成阿里云OSS上传文件系统教程
2021/06/28 Java/Android
html粘性页脚的具体使用
2022/01/18 HTML / CSS
一起来学习Python的元组和列表
2022/03/13 Python