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...