设为首页 加入收藏

TOP

基于tcp协议的套接字通信
2023-07-25 21:27:50 】 浏览:44
Tags:基于 tcp 通信

1、套接字socket简介

Socket是应用层与TCP/UDP协议通信的中间软件抽象层,它充当一种接口的角色!封装了传输层以下的东西。

1.1基于tcp的socket通信流程图

image

2.tcp服务端搭建

需求:模拟两个手机的通话

from ipaddress import IPv4Address
import socket

# 1.买手机
# socket.AF_INET 指定使用的IPv4地址
# socket.SOCK_STREAM 指定是tcp协议,流式协议,这里发过来的数据像水流粘在一起,所以会带来粘包问题
# socket.SOCK_DGRAM 指定的是udp协议,每一份数据都有分隔,所以不会带来粘包问题
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 2.绑定手机卡
 # 内部是参数是一个元组,第一参数为服务端自己对应的ip地址,第二个参数为需要绑定的端口
phone.bind(('127.0.0.1',8080))

# 3.开机--开启监听(把套接字由主动设置为被动模式)
phone.listen(5) # 5指的是半连接池的大小,最大允许128个连接

# 4.等待电话连接请求
while True:  # 加上链接循环
conn ,client_addr = phone.accept() 
# 返回的是一个元组,分别为,可以通过元组解包的形式得到具体的值
# conn 新的套接字,指的是服务当前的客户端套接字
# client_addr 客户端端口和ip地址


# 5.收/发信息
while True:
	data = conn.recv(1024)  # 最大接收的数据量为1024Bytes,收到的也是Bytes类型
	conn.send(data.upper())

# 6.关闭电话连接conn
conn.close()

3.tcp客户端搭建

import socket

# 1.买电话(与服务端建立连接)
phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 2.拨通服务端电话
# conneect里面是一个元组,第一个参数是服务端绑定的ip,第二参数是服务端绑定的端口
phone.connect(('127.0.0.1',8080))

# 3.发送信息
while True:
	msg = input()
	if msg == 'quit':
		break
	phone.send(“msg”.encode('utf-8'))
	phone.send('hello world'.encode('utf-8'))

# 4.接收消息
# recv_data 是接收到的数据的二进制,需要decode('utf-8')解码获取到数据
recv_data =phone.recv(1024)

# 5.关闭连接
phone.close()
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇【Python爬虫项目实战】Python爬.. 下一篇花了两天从几十万行代码里总结出..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目