Python學習筆記之 網路程式設計

2021-08-22 16:25:59 字數 2688 閱讀 1024

客戶端

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...