首页 > 其他分享 >基于tcp协议的套接字通信

基于tcp协议的套接字通信

时间:2022-12-13 11:12:39浏览次数:39  
标签:socket 通信 tcp phone conn 接字 服务端

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()

标签:socket,通信,tcp,phone,conn,接字,服务端
From: https://www.cnblogs.com/suncolor/p/16669866.html

相关文章

  • Vue笔记 - Vue组件间通信方法合集
    Vue组件间通讯方法总结目录Vue组件间通讯方法总结1.props2.$emit和$on3.$refs4.$attrs和$listeners5.provide和inject6.Vuex7.eventBus8.$parent,$children,$ro......
  • 面向连接的运输:TCP
    面向连接的运输:TCPTCP依赖于可靠数据传输,其中包括差错检测、重传、累积确认、定时器以及用于序号和确认号的首部子弹。TCP连接TCP被称为是面向连接的,这是因为在一个应用进程......
  • Tcp实现对象传输
    服务器处理用户连接线程类:publicclassServerThreadextendsThread{privateSocketsocket=null;publicServerThread(Socketsocket){this.socket=sock......
  • 进程通信之管道
    写在前面今天主要的任务就是知道什么是进程通信?进程通信是如何实现的?前面我们学习了基础IO,再往前看又学习进程的相关的概念,那么今天我们通过进程的通信来把他们用起来.......
  • 前端开发系列052-基础篇之数据流和组件通信(Vue)
    title:前端开发系列052-基础篇之数据流和组件通信(Vue)tags:categories:[]date:2017-12-2100:00:00本文是早期学习Vue整理的一些阶段性总结,内容主要关于Vue框架......
  • React组件之间的通信方式总结(下)
    一、写一个时钟用react写一个每秒都可以更新一次的时钟importReactfrom'react'importReactDOMfrom'react-dom'functiontick(){letele=<h1>{ne......
  • React组件之间的通信方式总结(上)
    先来几个术语:官方我的说法对应代码ReactelementReact元素letelement=<span>A爆了</span>Component组件classAppextendsReact.Component{}无Ap......
  • python服务端与android客户端基于TCP协议的简单通信
    点击连接服务器后接收传来的数据,改变Textview的文字内容在服务器端建立一个py文件server.pyimportsockethost='10.0.1.15''''上边这里填服务器的内网地址我也不知......
  • Qt开发:Windows 下进程间通信的可行桥梁:窗体消息SendMessage
    Qt开发:Windows下进程间通信的可行桥梁:窗体消息注:窗体消息仅适用于有窗口的进程,如果没有窗口是无法收到窗体消息的(哪怕是隐形的都可以),比如Qt中如果需要使用WindowsMessage......
  • 互斥,同步,进程间通信和文件阻塞总结
    互斥#########################中断屏蔽***********************************因为不能屏蔽其他CPU的中断,因此不能解决SMP多CPU引发的竞态,因为其他CPU也会引发竞争。因此,单独......