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之wxPython菜单使用详解
Sep 28 Python
Python实现翻转数组功能示例
Jan 12 Python
Python实现的简单计算器功能详解
Aug 25 Python
python 3.74 运行import numpy as np 报错lib\site-packages\numpy\__init__.py
Oct 06 Python
Python通过递归获取目录下指定文件代码实例
Nov 07 Python
Python requests获取网页常用方法解析
Feb 20 Python
python入门之井字棋小游戏
Mar 05 Python
Python自动化测试笔试面试题精选
Mar 12 Python
Django自定义列表 models字段显示方式
Apr 03 Python
Python3如何判断三角形的类型
Apr 12 Python
小白教你PyCharm从下载到安装再到科学使用PyCharm2020最新激活码
Sep 25 Python
浅谈Python 中的复数问题
May 19 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面向对象中static静态属性和静态方法的调用
2015/02/08 PHP
php for 循环使用的简单实例
2016/06/02 PHP
JavaScript与C# Windows应用程序交互方法
2007/06/29 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
2013/05/17 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
javascript实现保留两位小数的多种方法
2015/12/18 Javascript
js实现无缝循环滚动
2020/06/23 Javascript
浅谈JavaScript 覆盖原型以及更改原型
2016/08/31 Javascript
Bootstrap的fileinput插件实现多文件上传的方法
2016/09/05 Javascript
浅谈Node.js:理解stream
2016/12/08 Javascript
Node.js五大应用性能技巧小结(必须收藏)
2017/08/09 Javascript
浅谈AngularJS中$http服务的简单用法
2018/05/15 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
[56:45]DOTA2上海特级锦标赛D组小组赛#1 EG VS COL第一局
2016/02/28 DOTA
Python实现约瑟夫环问题的方法
2016/05/03 Python
Python Xml文件添加字节属性的方法
2018/03/31 Python
python去除扩展名的实例讲解
2018/04/23 Python
Python爬虫抓取代理IP并检验可用性的实例
2018/05/07 Python
python实现代码统计程序
2019/09/19 Python
python中的Elasticsearch操作汇总
2019/10/30 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
2020/05/22 Python
python中turtle库的简单使用教程
2020/11/11 Python
python3爬虫GIL修改多线程实例讲解
2020/11/24 Python
中国综合网上购物商城:苏宁易购
2016/08/09 全球购物
英国打印机墨盒销售网站:Ink Factory
2019/10/07 全球购物
干部现实表现材料
2014/02/13 职场文书
新闻专业毕业生英文求职信
2014/03/19 职场文书
要账委托书范本
2014/09/15 职场文书
2014年最新领导班子整改方案
2014/09/27 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2014年教研室工作总结
2014/12/06 职场文书
护士业务学习心得体会
2016/01/25 职场文书
Nginx tp3.2.3 404问题解决方案
2021/03/31 Servers
JavaWeb 入门篇:创建Web项目,Idea配置tomcat
2021/07/16 Java/Android