TCP程式設計

2021-08-22 04:46:34 字數 2075 閱讀 2959

匯入socket庫

import socket
建立乙個socket,並指明使用的哪個協議,af_inet指使用ipv4協議,sock_stream指建立tcp協議

s = socket.socket(socket.af_inet,socket.sock_stream)
s.connect(('www.sina.com.cn',80))

傳送資料,要求返回首頁內容

\n')接收資料

buffer = 

while true:

d = s.recv(1024) #1024指接受的位元組數

if d:

else:

break

data = b''.join(buffer)

關閉連線

s.close()
將http頭和網頁部分分離

header,html =

data

.split(b'\r\n\r\n',1)

print(header

.decode("utf-8"))

把接受的資料寫入檔案

with open(「sina.html」,』wb』)as f:

f.write(html)

import socket

import threading ,time

def tcplink(sock,addr):

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

socket.send(b'welcom!')

while true:

data = sock.recv(1024)

time.sleep(1)

ifnot data or data.decode('utf-8')=="exit":

break

sock.send(('hello,%s' % data.decode('utf-8')).encode("utf-8"))

socket.close()

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

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

#監聽埠

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

#5是監聽的最多的埠數

s.listen(5)

print('waiting for connection...')

while true:

#接受乙個新的連線

sock, addr = s.accept()

#建立新程序處理tcp連線,伺服器通過建立新的程序或新的執行緒來同時響應多個客戶端請求,

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

t.start()

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

#建立連線

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

#接受歡迎訊息

print(s.recv(1024).decode('utf-8'))

for data in [b'zhangshan',b'lisi',b'liwu']:

#傳送資料

s.send(data)

print(s.recv(1024).decode('utf-8'))

s.send(b'exit')

s.close

#需要開啟兩個命令列視窗,有乙個執行伺服器程式,乙個執行客戶端程式

TCP程式設計

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

TCP程式設計

客戶端 匯入socket庫 import socket 建立乙個socket。af inet指ipv4協議,如果要用ipv6則指定af inet6.sock stream指定使用面向流的tcp協議 s socket.socket socket.af inet,socket.sock stream 建...

tcp程式設計

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