Python---TCP 客户端程序开发

1. 开发 TCP 客户端程序开发步骤回顾

  1. 创建客户端套接字对象
  2. 和服务端套接字建立连接
  3. 发送数据
  4. 接收数据
  5. 关闭客户端套接字

2. socket 类的介绍

导入 socket 模块 import socket

创建客户端 socket 对象 socket.socket(AddressFamily, Type)

参数说明:

  • AddressFamily 表示IP地址类型, 分为TPv4和IPv6
  • Type 表示传输协议类型

方法说明:

  • connect((host, port)) 表示和服务端套接字建立连接, host是服务器ip地址,port是应用程序的端口号
  • send(data) 表示发送数据,data是二进制数据
  • recv(buffersize) 表示接收数据, buffersize是每次接收数据的长度

3. TCP 客户端程序开发示例代码

import socketif __name__ == '__main__':# 创建tcp客户端套接字# 1. AF_INET:表示ipv4# 2. SOCK_STREAM: tcp传输协议tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 和服务端应用程序建立连接tcp_client_socket.connect(("192.168.131.62", 8080))# 代码执行到此,说明连接建立成功# 准备发送的数据send_data = "你好服务端,我是客户端小黑!".encode("gbk")# 发送数据tcp_client_socket.send(send_data)# 接收数据, 这次接收的数据最大字节数是1024recv_data = tcp_client_socket.recv(1024)# 返回的直接是服务端程序发送的二进制数据print(recv_data)# 对数据进行解码recv_content = recv_data.decode("gbk")print("接收服务端的数据为:", recv_content)# 关闭套接字tcp_client_socket.close()

执行结果:

b'hello'
接收服务端的数据为: hello

说明

  1. str.encode(编码格式) 表示把字符串编码成为二进制
  2. data.decode(编码格式) 表示把二进制解码成为字符串

网络调试助手充当服务端程序:

4. 小结

  1. 导入socket模块
  2. 创建TCP套接字‘socket’
    • 参数1: ‘AF_INET’, 表示IPv4地址类型
    • 参数2: ‘SOCK_STREAM’, 表示TCP传输协议类型
  3. 发送数据‘send’
    • 参数1: 要发送的二进制数据, 注意: 字符串需要使用encode()方法进行编码
  4. 接收数据‘recv’
    • 参数1: 表示每次接收数据的大小,单位是字节
  5. 关闭套接字‘socket’表示通信完成


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/237124.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据爬虫技术

随着互联网的发展,各行各业都开始注重数据的分析和应用。而大数据的出现,则让这一切变得更加便捷。但是,大数据的获取过程却并不简单,需要借助于爬虫技术来实现。本文将从基础概念到实践操作,详细介绍大数据爬虫技术。…

解决Electron应用中的白屏问题的实用方法

在使用Electron构建应用程序时,一些开发者可能会面临窗口加载过程中出现的白屏问题。这种问题主要分为两个方面: Electron未加载完毕HTML: 这时Electron自身产生的白色背景可能导致用户在启动应用时看到一片空白。HTML加载渲染过程中的短暂白…

JavaScript:函数

JavaScript:函数 函数的作用函数的声明和调用函数声明函数调用函数重复声明 函数传参传参语法参数默认值与参数数量问题传参数量过多传参数量太少参数默认值 函数的返回值函数表达式匿名函数立即执行函数 函数的作用 在我们编程过程中,会出现一种情况&a…

[软件] Image2LCD v4.0

介绍 通过打开图片, 可以提取图片的像素特征, 生成.c文件, 或者二进制文件等, 提供人们根据需要选择. 16位真彩色 每一个像素点需要用16位来表示, 分别是RGB, R: 5位 G: 6位, B: 5位, 共两个字节. 配置 tftLCD180显示屏, 官方给的参考代码, 需要如下所示设置.

gateway配置

server:port: 8080 spring:application:name: test-gatewaycloud:nacos:discovery:server-addr: localhost:8848gateway:discovery:locator:enabled: false#是否开启网关enabled: trueroutes:- id: test-order-route#目标微服务的请求地址和端口uri: lb://test-orderpredicates…

【Spring Security】认证密码加密Token令牌CSRF的使用详解

🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《Spring Security》。🎯🎯 …

【如何隔离受感染主机】

以下是隔离感染主机的详细可实施步骤: 断开网络连接: 对于有线连接,直接从感染主机上拔掉网线。 对于无线连接,执行以下操作: Windows系统:点击任务栏的网络图标,然后点击“断开”。macOS系统&a…

频谱论文:RadioUNet:使用卷积神经网络的快速无线电地图估计

#频谱# R. Levie, . Yapar, G. Kutyniok and G. Caire, "RadioUNet: Fast Radio Map Estimation With Convolutional Neural Networks," in IEEE Transactions on Wireless Communications, vol. 20, no. 6, pp. 4001-4015, June 2021, doi: 10.1109/TWC.2021.305497…

Triton + HF + Qwen 推理经验总结

1. 简介 Triton介绍参考:GitHub - triton-inference-server/tutorials: This repository contains tutorials and examples for Triton Inference Server 2. 实现方案 2.1. docker部署 # 拉取docker镜像 git clone -b r23.10 https://github.com/triton-inferen…

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!

【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!😎 前言🙌【hadoop】解决浏览器不能访问Hadoop的50070、8088等端口?!查看自己的配置文件:最终成功访问如图所示: 总结撒花…

10 个顶级免费 Android 数据恢复软件可帮助恢复已删除的文件

不小心删除了手机上的一些重要数据或文件?这很不幸,但不要悲伤或放弃希望,因为仍有机会恢复它们。 10 个顶级免费 Android 数据恢复软件 虽然 Android 手机没有像 Windows 那样的回收站可以自动存储您删除的数据,但是有很多功能强…

grep 命令详解

1. grep 简介 grep 是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。通常grep有三种版本grep、egrep(等同于grep -E)和fgrep。egrep为扩展的grep,fgrep则为快速grep(使用固定…

【Java中的负数取绝对值结果为什么不一定是正数?】

Java中的负数取绝对值结果为什么不一定是正数? ✅典型解析✅扩展知识仓✅整型的取值范围✅超出范围怎么办 ✅典型解析 假如,我们要用Math.abs对一个nteger取绝对值的时候,如果用如下方式: Math .abs(orderId.hashCode());得到的结果可能是个负…

在Java Web开发中,Servlet功能与jsp功能可以相互转换吗

在Java Web开发中,Servlet和JSP是两种常用的Web组件,它们可以相互协作,也可以相互转换。 具体来说,Servlet可以实现所有JSP的功能,而JSP也可以调用Servlet中的方法。Servlet可以通过Java代码生成HTML页面,而…

libp2p服务发现之 Multicast DNS(mDNS)

文章目录 libp2p服务发现之 Multicast DNS(mDNS)一、Multicast DNS(mDNS)mDNS 的工作原理Multicast DNS (mDNS) 和 DNS (Domain Name System) 区别 二、mDNS和libp2p的关系三、Kademlia Distributed Hash Table(DHT&am…

一键转换,将HTML智能转换为PDF,轻松解决文档转换需求

在数字时代,HTML网页是我们获取信息的主要来源之一。然而,有时候我们可能需要将网页内容以PDF格式保存,以便于离线阅读、打印或分享。这时,将HTML转换为PDF就变得尤为重要。 首先,我们要进入首助编辑高手主页面&#x…

JavaScript 从入门到进阶 01 :变量和声明 JavaScript的数据类型 类型转换

当您开始学习JavaScript时,了解变量和数据类型是至关重要的,因为它们是构建任何程序的基础。在本博客文章中,我们将深入研究JavaScript中的变量和数据类型,包括它们的定义、不同的数据类型以及如何进行类型转换。 变量和声明 Java…

[CVPR-23] Instant Volumetric Head Avatars

[paper | code | proj] 本文提出INSTA。INSTA是一种backward mapping方法。该方法基于NeRF建立标准空间,形变空间(任意表情)通过映射回标准空间,实现渲染。为实现形变空间中任意点向标准空间的映射,对形变空间中的任意…

vue3+vite 搭建项目

第一步 npm init vitelatest 当然,我在建项目的时候输入这个命令行的时候,报错了,提示安装依赖,执行如下命令: npm install -g create-vite 全局安装 create-vite cd xxx npm install npm run dev 之后就 按照步…

C++ Qt开发:TabWidget实现多窗体功能

Qt 是一个跨平台C图形界面开发库,利用Qt可以快速开发跨平台窗体应用程序,在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置,实现图形化开发极大的方便了开发效率,本章将重点介绍TabWidget标签组件的常用方法及灵活运用。 Q…