以前也學過套接字程式設計,這次想系統全面的學習下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...