日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python网络编程案例_Python 网络编程_python网络编程基础_python高级编程

發(fā)布時(shí)間:2025/3/21 python 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python网络编程案例_Python 网络编程_python网络编程基础_python高级编程 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Python 網(wǎng)絡(luò)編程

Python 提供了兩個(gè)級(jí)別訪問的網(wǎng)絡(luò)服務(wù)。:

低級(jí)別的網(wǎng)絡(luò)服務(wù)支持基本的 Socket,它提供了標(biāo)準(zhǔn)的 BSD Sockets API,可以訪問底層操作系統(tǒng)Socket接口的全部方法。

高級(jí)別的網(wǎng)絡(luò)服務(wù)模塊 SocketServer, 它提供了服務(wù)器中心類,可以簡(jiǎn)化網(wǎng)絡(luò)服務(wù)器的開發(fā)。

什么是 Socket?

Socket又稱”套接字”,應(yīng)用程序通常通過”套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求,使主機(jī)間或者一臺(tái)計(jì)算機(jī)上的進(jìn)程間可以通訊。

socket()函數(shù)

Python 中,我們用 socket()函數(shù)來創(chuàng)建套接字,語法格式如下:

socket.socket([family[, type[, proto]]])

參數(shù)

family: 套接字家族可以使AF_UNIX或者AF_INET

type: 套接字類型可以根據(jù)是面向連接的還是非連接分為SOCK_STREAM或SOCK_DGRAM

protocol: 一般不填默認(rèn)為0.

Socket 對(duì)象(內(nèi)建)方法

函數(shù)

描述

服務(wù)器端套接字

s.bind()

綁定地址(host,port)到套接字, 在AF_INET下,以元組(host,port)的形式表示地址。

s.listen()

開始TCP監(jiān)聽。backlog指定在拒絕連接之前,操作系統(tǒng)可以掛起的最大連接數(shù)量。該值至少為1,大部分應(yīng)用程序設(shè)為5就可以了。

s.accept()

被動(dòng)接受TCP客戶端連接,(阻塞式)等待連接的到來

客戶端套接字

s.connect()

主動(dòng)初始化TCP服務(wù)器連接,。一般address的格式為元組(hostname,port),如果連接出錯(cuò),返回socket.error錯(cuò)誤。

s.connect_ex()

connect()函數(shù)的擴(kuò)展版本,出錯(cuò)時(shí)返回出錯(cuò)碼,而不是拋出異常

公共用途的套接字函數(shù)

s.recv()

接收TCP數(shù)據(jù),數(shù)據(jù)以字符串形式返回,bufsize指定要接收的最大數(shù)據(jù)量。flag提供有關(guān)消息的其他信息,通常可以忽略。

s.send()

發(fā)送TCP數(shù)據(jù),將string中的數(shù)據(jù)發(fā)送到連接的套接字。返回值是要發(fā)送的字節(jié)數(shù)量,該數(shù)量可能小于string的字節(jié)大小。

s.sendall()

完整發(fā)送TCP數(shù)據(jù),完整發(fā)送TCP數(shù)據(jù)。將string中的數(shù)據(jù)發(fā)送到連接的套接字,但在返回之前會(huì)嘗試發(fā)送所有數(shù)據(jù)。成功返回None,失敗則拋出異常。

s.recvform()

接收UDP數(shù)據(jù),與recv()類似,但返回值是(data,address)。其中data是包含接收數(shù)據(jù)的字符串,address是發(fā)送數(shù)據(jù)的套接字地址。

s.sendto()

發(fā)送UDP數(shù)據(jù),將數(shù)據(jù)發(fā)送到套接字,address是形式為(ipaddr,port)的元組,指定遠(yuǎn)程地址。返回值是發(fā)送的字節(jié)數(shù)。

s.close()

關(guān)閉套接字

s.getpeername()

返回連接套接字的遠(yuǎn)程地址。返回值通常是元組(ipaddr,port)。

s.getsockname()

返回套接字自己的地址。通常是一個(gè)元組(ipaddr,port)

s.setsockopt(level,optname,value)

設(shè)置給定套接字選項(xiàng)的值。

s.getsockopt(level,optname[.buflen])

返回套接字選項(xiàng)的值。

s.settimeout(timeout)

設(shè)置套接字操作的超時(shí)期,timeout是一個(gè)浮點(diǎn)數(shù),單位是秒。值為None表示沒有超時(shí)期。一般,超時(shí)期應(yīng)該在剛創(chuàng)建套接字時(shí)設(shè)置,因?yàn)樗鼈兛赡苡糜谶B接的操作(如connect())

s.gettimeout()

返回當(dāng)前超時(shí)期的值,單位是秒,如果沒有設(shè)置超時(shí)期,則返回None。

s.fileno()

返回套接字的文件描述符。

s.setblocking(flag)

如果flag為0,則將套接字設(shè)為非阻塞模式,否則將套接字設(shè)為阻塞模式(默認(rèn)值)。非阻塞模式下,如果調(diào)用recv()沒有發(fā)現(xiàn)任何數(shù)據(jù),或send()調(diào)用無法立即發(fā)送數(shù)據(jù),那么將引起socket.error異常。

s.makefile()

創(chuàng)建一個(gè)與該套接字相關(guān)連的文件

簡(jiǎn)單實(shí)例

服務(wù)端

我們使用 socket 模塊的 socket 函數(shù)來創(chuàng)建一個(gè) socket 對(duì)象。socket 對(duì)象可以通過調(diào)用其他函數(shù)來設(shè)置一個(gè) socket 服務(wù)。

現(xiàn)在我們可以通過調(diào)用 bind(hostname, port) 函數(shù)來指定服務(wù)的 port(端口)。

接著,我們調(diào)用 socket 對(duì)象的 accept 方法。該方法等待客戶端的連接,并返回 connection 對(duì)象,表示已連接到客戶端。

完整代碼如下:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

# 文件名:server.py

import socket # 導(dǎo)入 socket 模塊

s = socket.socket() # 創(chuàng)建 socket 對(duì)象

host = socket.gethostname() # 獲取本地主機(jī)名

port = 12345 # 設(shè)置端口

s.bind((host, port)) # 綁定端口

s.listen(5) # 等待客戶端連接

while True:

c, addr = s.accept() # 建立客戶端連接。

print '連接地址:', addr

c.send('歡迎訪問菜鳥教程!')

c.close() # 關(guān)閉連接

客戶端

接下來我們寫一個(gè)簡(jiǎn)單的客戶端實(shí)例連接到以上創(chuàng)建的服務(wù)。端口號(hào)為 12345。

socket.connect(hosname, port ) 方法打開一個(gè) TCP 連接到主機(jī)為 hostname 端口為 port 的服務(wù)商。連接后我們就可以從服務(wù)端后期數(shù)據(jù),記住,操作完成后需要關(guān)閉連接。

完整代碼如下:

#!/usr/bin/python

# -*- coding: UTF-8 -*-

# 文件名:client.py

import socket # 導(dǎo)入 socket 模塊

s = socket.socket() # 創(chuàng)建 socket 對(duì)象

host = socket.gethostname() # 獲取本地主機(jī)名

port = 12345 # 設(shè)置端口好

s.connect((host, port))

print s.recv(1024)

s.close()

現(xiàn)在我們打開連個(gè)終端,第一個(gè)終端執(zhí)行 server.py 文件:

$ python server.py

第二個(gè)終端執(zhí)行 client.py 文件:

$ python client.py

歡迎訪問菜鳥教程!

這是我們?cè)俅蜷_第一個(gè)終端,就會(huì)看到有以下信息輸出:

連接地址: ('192.168.0.118', 62461)

Python Internet 模塊

以下列出了 Python 網(wǎng)絡(luò)編程的一些重要模塊:

協(xié)議

功能用處

端口號(hào)

Python 模塊

HTTP

網(wǎng)頁訪問

80

httplib, urllib, xmlrpclib

NNTP

閱讀和張貼新聞文章,俗稱為”帖子”

119

nntplib

FTP

文件傳輸

20

ftplib, urllib

SMTP

發(fā)送郵件

25

smtplib

POP3

接收郵件

110

poplib

IMAP4

獲取郵件

143

imaplib

Telnet

命令行

23

telnetlib

Gopher

信息查找

70

gopherlib, urllib

喜歡 (1)or分享 (0)

總結(jié)

以上是生活随笔為你收集整理的python网络编程案例_Python 网络编程_python网络编程基础_python高级编程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。