tcp程式設計

2021-08-02 01:33:26 字數 1414 閱讀 5962

******tcp連線屬於三次握手*****

syn 用於向對方發起連線請求的標誌,規定帶syn標誌的資料報佔乙個位元組的編號。j是順序號,

ack 是用於應答的標誌,規定除了第一次的syn請求的資料報沒有ack,後面所有的資料報都帶有ack應答標誌。傳送j+1。

j+1 = 5 ,j+6..

三次目的:為了防止伺服器被惡意請求。

資料傳輸:兩次連線

**四次揮手**斷開連線屬於四次鏈結,fin用於斷開連線標誌,規定帶fin標誌的資料報佔乙個位元組編號

msl**maximum segment lifetime  最大的資料生存時間。

*****重點****tcp服務端流程,tcp客戶端流程**********

tcp --傳輸控制協議,面向連線的,可靠的,基於位元組流的傳輸層通訊協議。(應答機制,超時長傳機制,位元組流有編號)

connect()---發起連線請求

accept()---接起連線請求

-----------------------------伺服器端---------------------

1.建立socket,流式套接字,tcp協議.

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

# 設定允許復用位址  #(socket層屬性,重用位址,允許)

listen_socket.setsockopt(socket.sol_socket, scoket.so_reuseaddr,1)

2.繫結位址(ip,port)

my_addr=('192.168.138.127', 10000)

lisetn_socket.bind(my_addr)

3.設為監聽狀態listen()

listen_socket.listen(128) #backlog引數用來快取客戶端連線請求的佇列長度

print('listending....') #進入監聽狀態

4.等待鏈結請求accept()

while true:

ret,new_addr = listen_socket.accpet()

print(ret)

print(new_addr)

#伺服器收資料

rew =ret.recv(1024)  #對方關閉,recv不會阻塞,返回空字串

ret.recv(1024).close()

listen_socket.close()

---------------------------客戶端流程------------------------

def main():

#1. ---建立socket

tcp_socket =socket.socket(socket,af_inet,socket.sck_stream)

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程式設計

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