TCP程式設計

2021-06-25 17:42:13 字數 2256 閱讀 2849

####客戶端####

#匯入socket庫

import socket

#建立乙個socket。af_inet指ipv4協議,如果要用ipv6則指定af_inet6.sock_stream指定使用面向流的tcp協議

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

#建立連線。80埠是web服務的標準埠。smtp服務是25埠,ftp服務是21埠。

s.connect(('www.sina.com.cn',80))

#傳送資料

#接收資料。接收資料時,呼叫recv(max)方法,一次最多接收指定的位元組數,因此,在乙個while迴圈中反覆接收,直到recv()返回空資料,表示接收完畢,退出迴圈。

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)

import socket,threading,time

####伺服器####

def tcplink(sock,addr):

print 'accept new connection from %s:%s...' % addr

sock.send('welcome!')

while true:

data = sock.recv(1024)

time.sleep(1)

if data == 'exit' or not data:

break

sock.send('hello,%s!' % data)

sock.close()

print 'connection from %s:%s closed.' % addr

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

#監聽埠

s.bind(('127.0.0.1',9999))

s.listen(5)

print 'wating for connection...'

while true:

#接受乙個新的連線

sock,addr = s.accept()

#建立新執行緒來處理tcp連線

t = threading.thread(target=tcplink,args=(sock,addr))

t.start()

'tcplink函式要放到前面,不然出錯 - -。'

'伺服器可能有多塊網絡卡,可以繫結到某一塊網絡卡的ip位址上,也可以用0.0.0.0繫結到所有的網路位址,'

'還可以用127.0.0.1繫結到本機位址。127.0.0.1是乙個特殊的ip位址,表示本機位址,如果繫結到這個位址,'

'客戶端必須同時在本機執行才能連線,也就是說,外部的計算機無法連線進來。'

'a socket example which send echo message to server.'

import socket

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

# 建立連線:

s.connect(('127.0.0.1', 9999))

# 接收歡迎訊息:

print s.recv(1024)

for data in ['michael', 'tracy', 'sarah']:

# 傳送資料:

s.send(data)

print s.recv(1024)

s.send('exit')

s.close()

TCP程式設計

基於tcp 伺服器 程式設計步驟 1.建立乙個socket,用函式socket 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.設定允許的最大連線數,用函式listen 4.等待來自客戶端的連線請求,用函式accept 5.收發資料,用函式send 和recv 或者read 和wri...

tcp程式設計

tcp連線屬於三次握手 syn 用於向對方發起連線請求的標誌,規定帶syn標誌的資料報佔乙個位元組的編號。j是順序號,ack 是用於應答的標誌,規定除了第一次的syn請求的資料報沒有ack,後面所有的資料報都帶有ack應答標誌。傳送j 1。j 1 5 j 6.三次目的 為了防止伺服器被惡意請求。資料...

TCP程式設計

匯入socket庫 import socket建立乙個socket,並指明使用的哪個協議,af inet指使用ipv4協議,sock stream指建立tcp協議 s socket.socket socket.af inet,socket.sock stream s.connect www.sina...