客戶端
import socket
# 建立乙個socket:
s = socket.socket(socket.af_inet, socket.sock_stream)
# 建立連線:
s.connect(('127.0.0.1', 9999))
#接受或傳送
s.send(...)
s.recv(1024)
......
s.close()
af_inet指定使用ipv4協議,如果要用更先進的ipv6,就指定為af_inet6
sock_stream指定使用面向流的tcp協議
web服務的標準埠是80,smtp服務是25埠,ftp服務是21埠,等等。埠號小於1024的是internet標準服務的埠,埠號大於1024的,可以任意使用。
伺服器
import socket
import threading
s = socket.socket(socket.af_inet, socket.sock_stream)
# 監聽埠
s.bind(('127.0.0.1', 9999))
# 開始監聽,引數指定等待連線的最大數量
s.listen(5)
print 'waiting for connection...'
# 處理連線的執行緒
def tcplink(sock, addr):
sock.send(...)
time.sleep(...)
data = sock.recv(1024)
sock.close()
# 通過死迴圈來接受連線
while true:
# 接受乙個新連線
sock, addr = s.accept()
# 建立新執行緒來處理tcp連線
t = threading.thread(target=tcplink, args=(sock, addr))
t.start()
監聽的位址和埠:可以繫結到某一塊網絡卡的ip位址上,也可以用0.0.0.0繫結到所有的網路位址,還可以用127.0.0.1繫結到本機位址。127.0.0.1表示本機位址。
http協議規定客戶端必須先發請求給伺服器,伺服器收到後才發資料給客戶端。
客戶端
s = socket.socket(socket.af_inet, socket.sock_dgram)
for data in [...]:
# 傳送資料:
s.sendto(data, ('127.0.0.1', 9999))
# 接收資料:
print s.recv(1024)
s.close()
從伺服器接收資料仍然呼叫recv()方法。
伺服器
import socket
s = socket.socket(socket.af_inet, socket.sock_dgram)
# 繫結埠:
s.bind(('127.0.0.1', 9999))
while true:
# 接收資料:
data, addr = s.recvfrom(1024)
print 'received from %s:%s.' % addr
s.sendto('hello, %s!' % data, addr)
使用udp協議時,不需要建立連線,只需要知道對方的ip位址和埠號,就可以直接發資料報,直接接收任何客戶端的資料。
sock_dgram指定了這個socket的型別是udp。
# 匯入socket庫:
import socket
# 建立乙個socket:
s = socket.socket(socket.af_inet, socket.sock_stream)
# 建立連線:
s.connect(('www.sina.com.cn', 80))
# 傳送資料/請求,要求返回首頁的內容
# 接收資料:
buffer =
while true:
# 每次最多接收1k位元組:
d = s.recv(1024)
if d:
else:
break
data = ''.join(buffer)
# 關閉連線:
s.close()
# 把http頭和網頁分離一下,把http頭列印出來,網頁內容儲存到檔案
header, html = data.split('\r\n\r\n', 1)
print header
# 把接收的資料寫入檔案:
with open('sina.html', 'wb') as f:
f.write(html)
Python筆記之網路程式設計
1,學習這部分,應先了解一下osi 7層模型,tcp ip四層,socket套接字等網路相關知識點。python網路庫,urllib,urllib2,後者功能更強大一些。import urllib2 import urllib html response.read print html 還有smtp...
Python網路程式設計 學習筆記
1 為了把全世界的所有不同型別的計算機都連線起來,就必須規定一套全球通用的協議,為了實現網際網路這個目標,網際網路協議簇 internet protocol suite 就是通用協議標準。internet是由inter和net兩個單詞組合起來的,原意就是連線 網路 的網路,有了internet,任何...
學習筆記 Python網路程式設計
tcp程式設計 server 1 import socket,threading,time23 defdealclient sock,addr 4print accept new connection from s s.addr 5 sock.send b hello,i am server 給cl...