iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python套接字socket通信
  • 855
分享到

python套接字socket通信

2024-04-02 19:04:59 855人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

目录一、初步认识二、Socket对象一、初步认识 socket被翻译成套接字,尽管有些人诟病,但我觉得还挺贴切的。其功能是提供低级别的网络服务,最常用的就是根据IP来传输数据。 所谓

一、初步认识

socket翻译成套接字,尽管有些人诟病,但我觉得还挺贴切的。其功能是提供低级别的网络服务,最常用的就是根据IP来传输数据。

所谓传输,就要有两个“端”,首先做一个服务端

import socket
s = socket.socket()
host = socket.gethostname() #本机地址   
port = 12345                #端口
s.bind((host,port))         #绑定端口
s.listen(3)     #开始监听,最多支持三个链接
while True:
    c, addr = s.accept()    #等待连接
    print("Linked @ Addr",addr)
    break

#下面为发送命令
while True:
    data = input("input data:")
    c.send(data.encode("utf8"))
    if data=="exit":
        c.close()
        break

需要注意的是,send需要发送的内容是二进制码,故而通过encodedecode来编解码。最后如果输入exit则退出。

然后写一个客户端

import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect((host,port))
while True:
    data = s.recv(1024).decode("utf8")
    if data!=b'':
        print("receive data:", data)
    # 当接收到exit时关闭端口,退出循环
    if data[:4]=="exit":
        s.close()
        break

运行之后,服务端和客户端的输入输出分别为

#服务端
Linked @ Addr ('192.168.1.113', 9953)
input data:hello world
11
input data:who are you
11
input data:can u speak chinese?
20
input data:exit

#客户端
receive data: hello world
receive data: who are you
receive data: can u speak chinese?
receive data: exit

二、socket对象

在上例中,通过socket.socket创建了一个socket对象,其完整的构造函数为

socket.socket(family=AF_INET, type=SOCK_STREAM,proto=0,fileno=None)

其中,family表示套接字的地址族,主要包括三类

地址族AF_INETAF_INET6AF_UNIX
协议来源IPv4IPv6UNIX

在创建串口时,可以通过或运算|同时选择多个地址族。

type为套接字类型,比较常用的有两种:

  • SOCK_STREAM,为流式套接字,特点是传输与接收顺序相同,安全
  • SOCK_DGRAM,为数据报格式套接字,特点是快、无顺序、可能丢失

proto为协议号,一般为0,当协议族为AF_CAN时,协议应为CAN_RAW, CAN_BCM, CAN_ISOTPCAN_J1939

fileno代表一个创建socket的文件。

尽管构造函数并无声明客户端与服务端的参数,但从功能来看,二者所能够调用的成员应该并不完全相同。

其中,bind,listen,accept这三个方法为服务端的专有方法,其功能分别为

  • bind(address):将其绑定到某个地址,其中地址address一般为一个元组,包括IP和端口号
  • listen(N):启动一个服务器用于接受连接,N为最多连接个数,不小于0。
  • accept():接受一个连接,无参数,返回值是(conn, address)元组,conn是一个新的socket对象,用于收发数据。

相应地,客户端也有两个专用的方法:

  • connect(address):连接某个地址。
  • connect_ex(address):和connect相比,当出现错误时返回错误码,而不报错。

接下来是客户端和服务端均可使用的方法,其中最关键的就是发送send和接收recv。

其中,与发送相关的函数有:

  • send(bytes):其中bytes为发送字节,返回已发送的字节(有的时候可能并没有发完)。
  • sendall(bytes):和send相比,会持续发送bytes,直到所有数据都已发送或者报错。
  • sendfile(file,offset=0,count=None):在Unix下发送文件,在windows下和send相同,相当于是不可用的。
  • sendto(bytes,addresss):指定地址发送数据。

在Windows中可用的接收相关函数有两组,其中bufsize表示接收数据的最大字节数。

 返回数据返回数据+接收端地址
不写入缓冲区recv(bufsize)recvfrom(bufsize)
写入缓冲区bufrecv_into(buf,bufsize)recvfrom_into(buf,bufsize)

get-set是很多模块中都会出现的函数名称,前者代表获取某种参数,后者代表设置某些参数,一般后者的输入为前者的输出。

套接字中止或者关闭的方法有下面几种:

  • close()关闭套接字的文件描述符
  • detach()关闭套接字对象,但并不关闭文件描述符

shutdown(how)可以部分关闭套接字的连接,其中how为:

  • SHUT_RD:后续不再允许接收
  • SHUT_WR:后续不再允许发送
  • SHUT_RDWR:后续的发送和接收都不允许

 到此这篇关于python套接字socket通信的文章就介绍到这了,更多相关Python  socket通信内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: python套接字socket通信

本文链接: https://www.lsjlt.com/news/144699.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python套接字socket通信
    目录一、初步认识二、socket对象一、初步认识 socket被翻译成套接字,尽管有些人诟病,但我觉得还挺贴切的。其功能是提供低级别的网络服务,最常用的就是根据IP来传输数据。 所谓...
    99+
    2024-04-02
  • python套接字socket通信在实现
    本文小编为大家详细介绍“python套接字socket通信在实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“python套接字socket通信在实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、初步认识s...
    99+
    2023-06-29
  • C#之Socket(套接字)通信
    一、socket是什么 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在...
    99+
    2024-04-02
  • python UDP套接字通信
    UDPserver.py 1 import socket 2 #导入套接字模块 3 4 s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) 5 # - socket.AF_...
    99+
    2023-01-30
    通信 python UDP
  • php 进程通信系列 (五)socket unix域套接字
    php 进程通信系列 (五)socke unix域套接字 常见进程通信方式Unix socket (套接字)介绍一些理论基础:我们来看看php创建 无命名本地域 socket 的函数:命名Un...
    99+
    2023-10-10
    php
  • C#基于Socket套接字的网络通信封装
    本文为大家分享了C#基于Socket套接字的网络通信封装代码,供大家参考,具体内容如下 摘要 之所以要进行Socket套接字通信库封装,主要是直接使用套接字进行网络通信编程相对复杂,...
    99+
    2024-04-02
  • Android通过WiFi建立Socket套接字通信并获取数据
    目录 前言 权限申请 获取WIFI信息 建立Socket套接字连接 接收Wifi数据 发送数据 综合代码 使用方式 前言         本文主要讲述Android 11如何获取WIFI权限并通过TCP/IP协议使用Socket套接字与...
    99+
    2023-08-31
    android 网络
  • 【网络】socket——预备知识 | 套接字 | UDP网络通信
    🐱作者:一只大喵咪1201 🐱专栏:《网络》 🔥格言:你只管努力,剩下的交给时间! 在前面本喵对网络的整体轮廓做了一个大概的介绍,比如分层,协议...
    99+
    2023-09-02
    网络 udp
  • 【Python】Python 网络编程 ( Socket 套接字简介 | Socket 套接字使用步骤 | Socket 套接字服务端与客户端开发 )
    文章目录 一、Socket 套接字简介1、Socket 套接字概念2、Socket 套接字类型3、Socket 套接字使用步骤4、Socket 套接字服务端与客户端 二、Socket 服务...
    99+
    2023-08-31
    Python socket 网络编程 TCP UDP 原力计划
  • python基础之Socket套接字详解
    前言 Python语言提供了Socket套接字来实现网络通信。 Python的应用程序通常通过Socket"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可...
    99+
    2024-04-02
  • Python3 网络套接字(socket
    本文由 Luzhuo 编写,转发请保留该信息. 原文: http://blog.csdn.net/Rozol/article/details/72553736 以下代码以Python3.6.1为例 Less is...
    99+
    2023-01-31
    网络 socket
  • C#如何实现基于Socket套接字的网络通信封装
    小编给大家分享一下C#如何实现基于Socket套接字的网络通信封装,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!摘要之所以要进行Socket套接字通信库封装,主要...
    99+
    2023-06-21
  • .NET编程——利用C#实现TCP协议的异步通信Socket套接字(WinForm)
    本文将介绍利用基于TCP通信协议的Socket实现服务器与客户端之间的数据传输。 目录 前言 计算机通信 创建服务器 服务器通信 创建客户端 客户端通信 前言         TCP/IP(Transmission Control Pr...
    99+
    2023-09-04
    tcp/ip c# mysql 服务器
  • python基础之Socket套接字的示例分析
    这篇文章给大家分享的是有关python基础之Socket套接字的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几乎无所不...
    99+
    2023-06-14
  • 网络编程—Socket套接字详解
    目录 一、网络编程 1.1、为什么需要网络编程? 1.2、什么是网络编程 1.3、发送端和接收端 ​编辑1.4、请求和响应 ​编辑1.5、客户端和服务端  二、Socket套接字  2.1、概念 2.2、分类  2.2.1、流套接字  2....
    99+
    2023-09-01
    网络 服务器 运维 Socket套接字
  • 学习网络编程No.5【TCP套接字通信】
    引言: 北京时间:2023/8/25/15:52,昨天刚把耗时3天左右的文章更新,充分说明我们这几天并不是在摆烂中度过,而是在为了更文不懈奋斗,历时这么多天主要是因为该部分知识比较陌生,所以需要我们花...
    99+
    2023-09-05
    网络 学习 tcp/ip
  • 面向对象之套接字(socket)和黏包
      tcp是基于链接的,必须先启动服务端,然后再启动客户端去链接服务端   基于UDP协议的socket   server端: import socket udp_sk = socket.socket(type=socket.SOCK...
    99+
    2023-01-30
    面向对象 socket
  • Linux进程间通信中如何使用流套接字
    小编给大家分享一下Linux进程间通信中如何使用流套接字,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!进程间的通信,所通信的进程都是在同一台计算机上的,而使用so...
    99+
    2023-06-09
  • Python Socket通信黏包问题分
    参考:http://www.cnblogs.com/Eva-J/articles/8244551.html#_label5 1.黏包的表现(以客户端远程操作服务端命令为例) 注:只有在TCP协议通信的情况下,才会产生黏包问题 基于TCP协...
    99+
    2023-01-30
    通信 Python Socket
  • Python基础之Socket通信原理
    上图是socket网络编程的流程图 至于数据在网络中是怎么走的,咱先不说,那个太底层了,咱今天见就说如何将数据从咱的屏幕上放到网络流中去。 这可不是键盘敲敲,回车一按的事情,在这背...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作