Python里disconnect UDP套接字的方法
UDP 套接字是可以使用 connect 系統(tǒng)調(diào)用連接到指定的地址的。從此以后,這個套接字只會接收來自這個地址的數(shù)據(jù),而且可以使用 send 系統(tǒng)調(diào)用直接發(fā)數(shù)據(jù)而不用指定地址??梢栽俅握{(diào)用 connect 來連接到別的地方。但是在 Python 里,一旦調(diào)用 connect 之后,就再也回不到最初的能夠接收從任意地址來的數(shù)據(jù)的狀態(tài)了!
這是 Python 的 API 限制,沒辦法給 connect 方法傳遞到 AF_UNSPEC 地址簇(在 C 代碼里寫死了的)。C 里邊就可以做到的(代碼來自這里):
int disconnect_udp_sock(int fd) {
struct sockaddr_in sin;
memset((char *)&sin, 0, sizeof(sin));
sin.sin_family = AF_UNSPEC;
return (connect(fd, (struct sockaddr *)&sin, sizeof(sin)));
}
不過既然是 Python 的限制,拿 ctypes 就可以繞過了嘛,有些麻煩就是了:
from ctypes import CDLL, create_string_buffer
def disconnect(sock):
libc = CDLL("libc.so.6")
buf = create_string_buffer(16) # sizeof struct sockaddr_in
libc.connect(sock.fileno(), buf, 16)
AF_UNSPEC 的值是 0,所以把一個和 struct sockaddr_in 一樣長的全零緩沖區(qū)傳給 connect 就可以了 :-)
- Python 網(wǎng)絡編程之UDP發(fā)送接收數(shù)據(jù)功能示例【基于socket套接字】
- python UDP(udp)協(xié)議發(fā)送和接收的實例
- python實現(xiàn)udp數(shù)據(jù)報傳輸?shù)姆椒?/a>
- python網(wǎng)絡編程之UDP通信實例(含服務器端、客戶端、UDP廣播例子)
- python基礎教程之udp端口掃描
- python檢測遠程udp端口是否打開的方法
- Python的Socket編程過程中實現(xiàn)UDP端口復用的實例分享
- Python+Socket實現(xiàn)基于UDP協(xié)議的局域網(wǎng)廣播功能示例
- python網(wǎng)絡編程之數(shù)據(jù)傳輸UDP實例分析
- Python基于socket模塊實現(xiàn)UDP通信功能示例
- Python實現(xiàn)基于TCP UDP協(xié)議的IPv4 IPv6模式客戶端和服務端功能示例
- Python udp網(wǎng)絡程序?qū)崿F(xiàn)發(fā)送、接收數(shù)據(jù)功能示例
相關文章
tensorflow通過模型文件,使用tensorboard查看其模型圖Graph方式
今天小編就為大家分享一篇tensorflow通過模型文件,使用tensorboard查看其模型圖Graph方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python3實現(xiàn)爬取指定百度貼吧頁面并保存頁面數(shù)據(jù)生成本地文檔的方法
這篇文章主要介紹了Python3實現(xiàn)爬取指定百度貼吧頁面并保存頁面數(shù)據(jù)生成本地文檔的方法,涉及Python基于urllib模塊的頁面爬取與文件讀寫相關操作技巧,需要的朋友可以參考下2018-04-04jupyter notebook中新建cell的方法與快捷鍵操作
這篇文章主要介紹了jupyter notebook中新建cell的方法與快捷鍵操作,具有很好的參考價值,希望對有所幫助。一起跟隨小編過來看看吧2020-04-04解決Python爬蟲錯誤之twisted.web.error.SchemeNotSupported: Unsu
這篇文章主要介紹了解決Python爬蟲錯誤之twisted.web.error.SchemeNotSupported: Unsupported scheme: b''問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02Python使用urllib2模塊抓取HTML頁面資源的實例分享
這篇文章主要介紹了Python使用urllib2模塊抓取HTML頁面資源的實例分享,將要抓取的頁面地址寫在單獨的規(guī)則列表中方便組織和重復使用,需要的朋友可以參考下2016-05-05