python3套接字udp設定接受資料超時

2022-02-25 14:38:00 字數 1694 閱讀 9855

1樓:死了繼續活

import socket

def shuncom_device_list(gw_ip):

global winds_ip

try:

winds_host_name = socket.gethostname()

winds_ip = socket.gethostbyname(winds_host_name) # 獲取當前主機ip

ip_port = (gw_ip,8888)#閘道器的網段

udp_client = socket.socket(socket.af_inet, socket.sock_dgram)

udp_client.settimeout(10) #獲取套接字預設超時時間10秒

udp_client.bind((winds_ip,9999)) #電腦ip和埠

send_data = ''

udp_client.sendto(bytes(send_data,encoding="utf-8"),ip_port)

gw_device_list = (udp_client.recv(1024)).decode('utf-8')

print(gw_device_list)

udp_client.close()

return gw_device_list

except:

print('連線%s 超時'%winds_ip)

shuncom_device_list('192.168.6.255')

如何針對套接字操作設定超時

python udp傳送資料的問題

2樓:

不用connect和send,直接sendto(addr, data)應該就不檢測伺服器有沒有開。

什麼叫套接字超時~

3樓:幻之誰愚

對於一個套接字的讀寫(read/write)操作預設是阻塞的,如果當前套接字還不可讀/寫,那麼這個操作會一直阻塞下去,這就叫套接字超時;

這樣對於一個需要高效能的伺服器來說,是不能接受的。所以,可以在進行讀寫操作的時候可以指定超時值,這樣就讀寫操作就不至於一直阻塞下去。

在涉及套接字的i/o操作上設定超時的方法有三種:

1:呼叫alarm,它在指定的超時期滿時產生sigalrm訊號。這個方法涉及訊號處理,而訊號處理在不同的實現上存在差異,而且可能干擾程序中現有的alarm呼叫。

2:在select中阻塞等待i/o(select有內建的時間限制),依次代替直接阻塞在read或write呼叫上。(linux2.

6以後的核心也可以使用epoll的epoll_wait)

3:使用較新的so_rcvtimeo和so_sndtimeo套接字選項。這個方法的問題在於並非所有的實現都支援這兩個套接字選項。

4樓:匿名使用者

套接字超時就是當套按字在你所設定的時間內沒有讀或寫事件發生,那麼就會返回0,你可以根據這個返回值進行處理,繼續等待或中斷或其他操作."你所設定的時間"就是socket_timeout,這只是一個你自己定義的巨集,你可以設定任意值.

5樓:匿名使用者

socket_timeout 只是一個標記,可以換成其他數字,但是要注意不要和其他#define定義的數值一樣就行了。

python3語法問題,python語法問題?

巢狀的話,裡面的用 代替 樓主用的是python3吧 print 在python2中是語句,在python3中是函式 這個用法在python2.x版本是可以的 6 去除print語句,加入print 函式實現相同的功能。同樣的還有 exec語句,已經改為exec 函式 例如 2.x print th...

用python3生成00010002000399989999組成的

file open numbers.txt w for i in range 1,10000 file.write 04d n i file.close python程式語言適合做什麼?python語言通俗易懂 上手快 語法簡單,是比較熱門的行業,而且python語言可以從事的工作崗位有很多,比如說...

python3的format中s的用法

抄格式襲化字串型別數bai據 表示右對齊15個字du符,左側空zhi 白預設用空格填充 表示左對齊加dao 小數點一共8位的浮點型小數,保留小數點後兩位 中間的冒號,就是分隔兩個資料的分隔符 所以print format length 23.87501 這一句的執行結果是 網頁連結見此連結裡的5.8...