網路程式設計(二)

2021-10-01 10:24:39 字數 1584 閱讀 3078

實現併發

if __name__ ==

'__main__'

:# 暈,有點忘記了。他的目的是,在匯入模組時不會讓匯入的模組在這個程式裡重複執行。

實現併發,基本步驟:

import socketserver  # 在s端實現併發,要匯入這個類,這是乙個框架。

class

my_server

(socketserver.baserequesthandler)

:# 自己建立乙個類,必須繼承socketserver.baserequesthandler父類。

defhandle

(self)

:# 自己建的方法,名字必須叫這個 handle 因為在父類裡有和他相同名字的方法。r

pass

# 所有的邏輯部分放在這裡

if __name__==

"__main__"

:# 避免匯入模組時的重複執行

server=socketserver.threadingtcpserver(

("127.0.0.1"

,8000

),my_server)

# 這裡其實就是和 c 端建立連線等等。

server.serve_forever(

)# 要執行就得用這個方法來實現

執行緒:乙個執行緒就是一堆指令集合,是讓os執行起來的最小指令,執行緒之間可以資源共享

import threading  # 要建立多執行緒要匯入這個模組

import time

deffoo

(n):

print

("foo%s"

%n) time.sleep(1)

defbar

(n):

print

("bar%s"

%n) time.sleep(2)

start_time=time.time(

)t1=threading.thread(target=foo,args=(1

,))# 創立t1這個物件,target=foo,是要執行的函式,args=(1,)是給函式傳的引數

t1.start(

)# 必須用這個方法才能執行這個物件。

t2=threading.thread(target=bar,args=(2

,))# 這樣相當於在主線程裡新增了子執行緒

t2.start(

)# t2.join() #方法:意思是等待 t2 執行完了,再向下執行。

end_time=time.time(

)print

("------主線程-----------"

程序:乙個程序可以多個執行緒,對多個程序資源的乙個整合

網路程式設計(二)

網路程式設計基礎 二 struct in addr 這個結構體中儲存的是網路二進位制的ip位址 include struct hostent gethostbyname const char name name 網域名稱 返回值 struct hostent define h addr h addr...

網路程式設計(二)

一 流式服務和資料報服務 1 位元組流服務 傳送端send 只是將資料寫到tcp傳送緩衝區中,然後將傳送緩衝區中的資料打包成報文段傳送出去。接收端又將接收到的報文段寫到緩衝區中,最後recv 直接取資料。位元組流服務特點 資料沒有明確分割 由底層做分割 不分一定的報文段,什麼時候想發便可將寫入緩衝區...

網路程式設計(二)

在之前的部落格中,介紹了傳輸層的一種重要協議 tcp協議。今天來介紹另外一種傳輸層協議 udp 一 udp udp 無連線的 不可靠的 資料報服務。首先看一下udp報頭 從上圖可以看出,udp協議報頭比tcp協議報頭簡單很多,沒有tcp報頭裡面那麼多的保證機制,所以udp較比tcp簡單。不可靠 ud...