Python Socket TCP双端聊天功能实现过程详解
作者:阿久丶xin 发布时间:2022-03-13 02:25:44
标签:Python,Socket,TCP,聊天
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()
来源:https://www.cnblogs.com/laod/p/13025825.html
0
投稿
猜你喜欢
- python list筛选包含字符的字段l = [‘123a',‘456b',‘789c']ll = [s for
- 前言多线程一般用于同时调用多个函数,cpu时间片轮流分配给多个任务。 优点是提高cpu的使用率,使计算机减少处理多个任务的总时间;缺点是如果
- 通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与Runtime
- 重读LukeW的《Web Form Design:Filling in the Blanks》感触很深,除佩服LukeW的钻研精神外,更多的
- 导语:排版是一门艺术,也是一门技巧。我们每天都能在报纸,书籍等各种媒介上看到排版,或精美,或丑陋。如何能在准确传递信息的同时,又能排出精美的
- 机器学习之随机森林,供大家参考,具体内容如下1、Bootstraping(自助法)  
- 在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序
- django 创建过滤器一、需求来源:假如有一个模板文件有一个字符串变量,这个字符串变量中不能有任何的空格,而恰恰这个模板被很多个视图函数多
- 如下所示://定义编码 header( 'Content-Type:text/html;charset=utf-8
- 1、页签的表达。页签表达很清晰,当前页签突出,且层级包涵关系明确;看下图,一目了然的感觉,不用疑惑我在那部分里。不信?拿当当的对比一下,你感
- 阅读上一篇:你是真正的用户体验设计者吗? Ⅱ系统和用户环境设计苹果系统成功在于系统架构。简化系统本身,设备只能变得更好、更小、性能更强大。在
- 废话少说,上干活。for的基本操作for是用来循环的,是从某个对象那里依次将元素读取出来。看下面的例子,将已经学习过的数据对象用for循环一
- 一、需求说明能够根据模板批量生成docx文档。具体而言,读取excel中的数据,然后使用python批量生成docx文档。二、实验准备准备e
- 一、简介shutil是 python 中的高级文件操作模块,与os模块形成互补的关系,os主要提供了文件或文件夹的新建、删除、查看等方法,还
- 夹角余弦(Cosine)也可以叫余弦相似度。 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异。(
- 本文实例介绍了使用javascript来经验表单数据的方法,如:校验是否为英文,校验是否为数字及校验IP地址等: &l
- 效果展示打地鼠小游戏简介打地鼠的游戏规则相信大家都知道,这里就不多介绍了,反正就是不停地拿锤子打洞里钻出来的地鼠呗~首先,让我们确定一下游戏
- 假设有2个有序列表l1、l2,如何效率比较高的将2个list合并并保持有序状态,这里默认排序是正序。思路是比较简单的,无非是依次比较l1和l
- 用Python发送126邮件,供大家参考,具体内容如下今天想做个自动化邮件提醒的功能,最近刚好在学习python,都说python那么强大,
- 理论Python中不存在真正的私有方法。为了实现类似于c++中私有方法,可以在类的方法或属性前加一个“_”单下划线,意味着该方法或属性不应该