首页 > 编程语言 >无涯教程-Python - 网络编程

无涯教程-Python - 网络编程

时间:2023-08-26 10:33:58浏览次数:43  
标签:Socket Python 编程 无涯 TCP 连接 socket port 客户端

本章将使您对网络-Socket编程中最著名的概念有所了解。

Socket是双向通信通道的端点。Socket可以在一个进程内,同一台机器上的进程之间或不同大陆上的进程之间进行通信。

Socket可以在许多不同的通道类型上实现:Unix域Socket,TCP,UDP等。 socket 库提供用于处理常见传输的特定类以及用于处理其余传输的通用接口。

Socket有自己的词汇表-

Sr.No. Term & 描述
1

Domain

用作传输机制的协议系列。这些值是常量,如AF_INET,PF_INET,PF_UNIX,PF_X25等。

2

type

两个端点之间的通信类型,通常是面向连接协议的SOCK_STREAM和无连接协议的SOCK_DGRAM。

3

protocol

通常为零,可用于标识域和类型内协议的变体。

4

hostname

网络接口的标识符

5

port

每台服务器侦听在一个或多个端口上调用的客户端。

Socket 模块

要创建Socket,必须使用 socket 模块中提供的 socket.socket()函数,该函数具有以下通用语法:

s=socket.socket (socket_family, socket_type, protocol=0)

这是参数的描述-

  • socket_family   -  如前所述,它是AF_UNIX或AF_INET。

  • socket_type       - 这是SOCK_STREAM或SOCK_DGRAM。

  • protocol              - 通常忽略,默认为0。

一旦有了 socket 对象,就可以使用必需的函数来创建客户端或服务器程序。以下是所需函数的列表-

服务端方法

Sr.No. Method & 描述
1

s.bind()

此方法将地址(主机名,端口号对)绑定到Socket。

2

s.listen()

此方法设置并启动TCP侦听器。

3

s.accept()

这被动地接受TCP客户端连接,等待连接到达(阻塞)。

客户端方法

Sr.No. Method & 描述
1

s.connect()

此方法主动启动TCP服务器连接。

通用Socket方法

Sr.No. Method & 描述
1

s.recv()

该方法接收TCP消息

2

s.send()

该方法传输TCP消息

3

s.recvfrom()

此方法接收UDP消息

4

s.sendto()

此方法传输UDP消息

5

s.close()

此方法关闭Socket

6

socket.gethostname()

返回主机名。

服务器代码

要编写Internet服务器,使用Socket模块中的 socket 函数来创建Socket对象。然后使用Socket对象调用其他函数来设置Socket服务器。

现在调用 bind(hostname,port)函数为给定主机上的服务指定一个 port 。

接下来,调用返回对象的 accept 方法。此方法一直等到客户端连接到您指定的端口,然后返回表示与该客户端的连接的 connection 对象。

#!/usr/bin/python           # 这是server.py文件

import socket               # 导入socket模块

s=socket.socket()         # 创建socket对象
host=socket.gethostname() # 获取本地机器名称
port=12345                # 保留服务端口。
s.bind((host, port))        # 绑定到端口

s.listen(5)                 # 现在等待客户端连接。
while True:
   c, addr=s.accept()     # 与客户建立联系。
   print 'Got connection from', addr
   c.send('Thank you for connecting')
   c.close()                # 关闭连接

客户端代码

让无涯教程编写一个简单的客户端程序,该程序打开到给定端口12345和给定主机的连接。使用Python socket 模块函数创建Socket客户端非常简单。

socket.connect(hosname,port)打开与 port 上 hostname 的TCP连接。打开Socket后,您可以像读取任何IO对象一样从中读取Socket。完成后,记得关闭它,就像关闭文件一样。

以下代码是一个非常简单的客户端,该客户端连接到给定的主机和端口,从Socket读取任何可用数据,然后退出-

#!/usr/bin/python           # 这是client.py文件

import socket               # 导入socket模块

s=socket.socket()         # 创建socket对象
host=socket.gethostname() # 获取本地机器名称
port=12345                # 保留开放的端口号。

s.connect((host, port))
print s.recv(1024)
s.close()                     # 完成后关闭插座

现在,在后台运行此server.py,然后在client.py上方运行以查看输出。

# 以下将在后台启动服务器。
$python server.py & 

# 一旦服务器启动运行客户端,如下所示:
$python client.py

这将产生以下输出-

Got connection from ('127.0.0.1', 48437)
Thank you for connecting

Python 网络模块

Python网络编程中一些重要模块的列表。

协议 常用函数 端口号 Python模块
HTTP 网页 80 httplib,urllib,xmlrpclib
NNTP Usenet新闻 119 nntplib
FTP 文件传输 20 ftplib,urllib
SMTP 发送电子邮件 25 smtplib
POP3 获取电子邮件 110 poplib
IMAP4 获取电子邮件 143 imaplib
Telnet 命令行 23 telnetlib
Gopher 文档传输 70 gopherlib,urllib

请检查上述所有库,以使用FTP,SMTP,POP和IMAP协议。

参考链接

https://www.learnfk.com/python/python-networking.html

标签:Socket,Python,编程,无涯,TCP,连接,socket,port,客户端
From: https://blog.51cto.com/u_14033984/7241099

相关文章

  • 用Python制作一个PDF转Word工具
    工具:Python3.9.13,VSCode1.73.1,pdf2docx0.5.6,tkinter,Win10HomePDF文件不易编辑,想要编辑需要转成Word,但网上的工具很多要充VIP,所以今天我们就来做个PDF转Word工具。首先先安装第三方库:pipinstalltkinter导入库:#coding=utf-8importosimporttkinterfrompdf2docximport......
  • 【873】Python读取NetCDF中的scale_factor和add_offset
    参考:python中scale的用法_在netCDF4和Python中使用scale_factor和add_offset的示例?参考代码:importnetCDF4asncdir_path="./2m_temperature/03_TIFF/"files=os.listdir(dir_path)files=sorted(files)forfileinfiles:iffile.find('.tiff')<......
  • Python基础教程06 - 循环
    循环用于重复执行一些程序块。从上一讲的选择结构,我们已经看到了如何用缩进来表示程序块的隶属关系。循环也会用到类似的写法。for循环for循环需要预先设定好循环的次数(n),然后执行隶属于for的语句n次。基本构造是for元素in序列:   statement举例来说,我们编辑一个叫forDemo......
  • 无涯教程-Python - 正则表达示
    正则表达式是特殊的字符序列,可使用模式中保留的特殊语法来帮助您匹配或查找其他字符串或字符串集。Python模块re提供对Python中类似Perl的正则表达式的全面支持。如果在编译或使用正则表达式时发生错误,则re模块会引发异常re.error。Match函数此函数尝试使用可选的标志将RE......
  • 分享一个批量转换某个目录下的所有ppt->pdf的Python代码
    大家好,我是皮皮。一、前言前几天在Python最强王者群【Python小小小白】分享了一份Python自动化办公的代码,可以批量转换某个目录下的所有ppt->pdf,非常强大。二、实现过程在正式跑代码之后,你可能需要按照对应的库,不然会报错。代码运行之后,本地会出现下面的UI界面,选择PPT文件......
  • 学会Python Requests库+Cookies模拟自动登录!
    importrequestsurl="https://my.cheshi.com/user/"headers={"User-Agent":"Mozilla/5.0(Macintosh;IntelMacOSX10_15_7)AppleWebKit/537.36(KHTML,likeGecko)Chrome/116.0.0.0Safari/537.36"}res=requests.get(......
  • 并发编程的优缺点
    为什么要使用并发编程(并发编程的优点)•充分利用多核CPU的计算能力:通过并发编程的形式可以将多核CPU的计算能力发挥到极致,性能得到提升•方便进行业务拆分,提升系统并发能力和性能:在特殊的业务场景下,先天的就适合于并发编程。现在的系统动不动就要求百万级甚至千万级的并......
  • python网络编程
    1.套接字套接字(Socket)是实现网络编程进行数据传输的一种技术手段,网络上各种各样的网络服务大多都是基于Socket来完成通信的。socket是传输层提供给应用层的编程接口。所以,套接字socket编程分为TCP与UDP两类。在python中,通过Python套接字编程模块:importsocket提供socket......
  • Python 运算符优先级
    Python运算符优先级所谓优先级,就是当多个运算符同时出现在一个表达式中时,先执行哪个运算符。例如对于表达式a+b*c,Python会先计算乘法再计算加法;b*c的结果为8,a+8的结果为24,所以d最终的值也是24。先计算*再计算+,说明*的优先级高于+。Python支持几十种运算符,被划分......
  • 【Python-每日技巧】列举一些Python稍微有点难度的技巧
    元编程(Metaprogramming):这是一项高级技术,允许你在运行时动态地创建、修改和操作代码。Python提供了强大的元编程特性,如使用装饰器(Decorators)、元类(Metaclasses)和反射(Reflection)等。这些概念需要深入理解Python的对象模型和元数据处理能力。以下是一个使用元编程的示例,展示如何动态......