python 網路程式設計學習 套接字socket

2021-07-22 09:07:00 字數 3138 閱讀 7590

以前也學過套接字程式設計,這次想系統全面的學習下python網路程式設計的使用。做這個,為檢測進度,也為後續留下筆記和足跡。

socket 常用函式

socket.gethostname()

socket.gethostbyname()

import socket

host = socket.gethostname()

ip = socket.gethostbyname(host)

# 還能夠解析出外部服務的ip

# 找一下http和https的服務,如沒有回返回notfound錯誤

socket.getservbyport(80, 'tcp')

socket.getservbyport(443, 'tcp')

socket.ntohl()/socket.ntohs()

socket.htonl()/socket.htons()

socket.gettimeout()

socket.settimeout()

import socket

# 設定乙個套接字物件

sock = socket.socket(socket.af_inet, socket.sock_stream)

# 超時時間預設為空

sock.settimeout(100)

sock.gettimeout()

socket.error() 一般異常

socket.gaierror() 位址異常

socket.timeout() 超時異常

socket.getsockopt()

socket.setsockopt()

import socket

sock = socket.socket(socket.af_inet, socket.sock_stream)

# 查詢緩衝大小

sock.getsockopt(socket.sol_socket, socket.so_sndbuf)

sock.getsockopt(socket.sol_socket, socket.so_sndbuf)

# 設定大小

sock.setsockopt(socket.sol_socket, socket.so_sndbuf, 2048)

sock.setsockopt(socket.sol_socket, socket.so_sndbuf, 2048)

# 設定重用套接字

sock.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)

非阻塞:套接字遇到異常就拋錯誤socket.setblocking(0)

阻塞:遇到錯誤不會阻止操作socket.setblocking(1)

import ntplib

import time

ntp = ntplib.ntpclient()

res = ntp.request('pool.ntp.org')

print time.ctime(res.tx_time)

練習套接字 客戶端/服務端 簡單通訊

服務端

import socket

# 初始化乙個套接字

sock = socket.socket(socket.af_inet, socket.sock_stream)

# 設定套接字可重用

sock.setsockopt(socket.sol_socket, socket.so_reuseaddr, 1)

# 繫結套接字

sock.bind(('localhost', 8888))

# 監聽客戶端鏈結,最大數目為5

sock.listen(5)

while true:

# 阻塞,接收

client, add = sock.accept()

data = client.recv(2048)

print "data:", data, '\n', 'host:', add, '\n'

# 關閉

client.close

客戶端

import socket

# 初始化乙個套接字

sock = socket.socket(socket.af_inet, socket.sock_stream)

# 鏈結服務端

sock.connect(('localhost', 8888))

try:

# 傳送資料

sock.sendall("from client socket!")

except socket.error, e:

print "error!"

finally:

# 關閉

sock.close()

兩個終端通訊 

服務端

duck@duck:~/sockdir/chapter_1$ python sersock.py 

data: from client socket!

host: ('127.0.0.1', 53910)

客戶端

duck@duck:~/sockdir/chapter_1$ python clisock.py

python套接字程式設計 python套接字程式設計

服務端 usr bin python coding utf 8 import socket s socket.socket host socket.gethostname port 12345 s.bind host,port s.listen 5 while true c,addr s.accep...

python網路程式設計 socket套接字

本文目錄 一 socket 二 tcp伺服器 三 tcp客戶端 四 udp伺服器 五 udp客戶端 六 聊天的客戶端 七 聊天的伺服器 學習網路程式設計 其實就是在學socket主要控制傳輸資料的方式 tcp的傳輸方式 優點 通過三次握手來與伺服器建立連線 可以保證資料的完整性 a機器給b機器傳送資...

Python網路程式設計 Python套接字程式設計

python 提供了兩程式設計客棧個級別訪問的網路服務。低階別的網路服務支援基本的 socket,它提供了標準的 bsd sockets api,可以訪問底層作業系統socket介面的全部方法。高階別的網路服務模組 socketserver,它提供了伺服器中心類,可以簡化網路伺服器的開發。什麼是 s...