当前位置: 首页 > news >正文

SOCKET建立简单的tcp服务端与客户端通信

socket是什么

socket可以使两台机子建立连接,就像连接风扇与电源的插座一样,socket可以使服务端与客户端建立连接,服务端就像供电厂,而客户端就像用电器,而socket就是连接二者的插座。

建立简单的连接

  1. 如果我们想在客户端与服务端建立连接收发数据就需要分别执行socket方法。
    在这里插入图片描述

  2. 服务端依次执行bind() linten() acctpt()

在这里插入图片描述

  1. 客户端执行connect()请求与服务端连接在这里插入图片描述
  2. 之后服务端与客户端都可以执行send() recv()发送与接收消息

python实现

server

  1. socket()
  2. bind()绑定ip和端口
  3. listen()监听
  4. accept()等待连接。返回新的socket对象(用于收发数据)与addr(存有客户端IP与PORT)
  5. send()/recv()
  6. close()
import socketIP = '0.0.0.0'
PORT = 50000
BUF_LEN = 512listenSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)listenSocket.bind((IP, PORT))listenSocket.listen(5)
print('[*] Socket is listening..')
data, addr = listenSocket.accept()
print('[*] Got connection from', addr)
while True:received_data = data.recv(BUF_LEN)if not received_data:breakinfo = received_data.decode()print(f'[*] Received {info}')data.send(f'服务端收到消息{info}'.encode())data.close()
listenSocket.close()

client

  1. socket()
  2. connect()申请连接
  3. send()/recv()
  4. close()
import socketIP = '127.0.0.1'
PORT = 50000
BUFFER_SIZE = 512dataSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)dataSocket.connect((IP, PORT))while True:toSend = input('Enter a message to send: ')if toSend == '':breakdataSocket.send(toSend.encode())receivedData = dataSocket.recv(BUFFER_SIZE)if not receivedData:breakprint(receivedData.decode())dataSocket.close()
http://www.lryc.cn/news/537965.html

相关文章:

  • C语言-章节 1:变量与数据类型 ——「未初始化的诅咒」
  • 【HarmonyOS Next】图片选择方案
  • 【C语言】移除元素
  • Python----Python高级(网络编程:网络高级:多播和广播,C/S架构,TCP,UDP,网络编程)
  • CES 2025 上的创新方案——无电池智能纸尿裤-AP4470
  • Java 运算符
  • 【一文读懂】什么是MVVM?
  • GCD of Subset
  • BY组态:工业自动化的未来,触手可及
  • DeepSeek在linux下的安装部署与应用测试
  • 华为昇腾920b服务器部署DeepSeek翻车现场
  • JavaScript 内置对象-数组对象
  • Qt——连接MySQL数据库之ODBC的方法详细总结(各版本大同小异,看这一篇就够了)
  • 进程令牌:Windows 安全架构中的关键元素
  • 基于springboot的超时代停车场管理平台(源码+文档)
  • 缓存穿透、缓存击穿、缓存雪崩的区别与解决方案
  • 箭头函数的this指向谁
  • 【愚公系列】《Python网络爬虫从入门到精通》012-字符串处理
  • 【Python】01-基础
  • Java-DFS(深度优先搜索)
  • AI大模型编程能力对比:DeepseekClaudeGemini
  • 用C++实现点到三角形最小距离的计算
  • 解决前后端日期传输因时区差异导致日期少一天的问题
  • mmsegmentation自己的数据集+不同网络的config配对
  • Golang官方编程指南
  • ram的使用——初始化很重要
  • doris:最佳实践
  • [创业之路-299]:图解金融体系结构
  • RL--2
  • [JVM篇]分代垃圾回收