0
我有一個正在讀取ASCII文件(基本上是NMEA字符串)的Python腳本,然後使用基本套接字庫通過UDP廣播它們。Python套接字 - 停止從UDP數據報中剝離回車
NMEA字符串的'段落'每隔一秒鐘發出一個標題。服務器期望每個段落都以空行開頭(特別是\ r \ n,即0d 0a)。我適當地建立我的字符串('\ r \ n'+段落)。查看調試器中的字符串值並將該字符串轉換爲十六進制,它正確地預置了0d0a。
但是,當我檢查Wireshark中的十六進制轉儲時,似乎0d被剝離出來,大概是由套接字庫引起的,所以最終的數據報只有0a。當然,這應該是好的,除了服務器硬編碼爲0d0a。
那麼,有什麼辦法強制套接字庫保持0D十六進制字符?當我在Windows和Linux下運行客戶端時發生同樣的事情。
很奇怪的事情,通常是 「\ n」 被轉換到通過套接字/串行端口進行通信時「\ r \ n」.. .. – redShadow 2011-12-19 23:35:56
您究竟使用什麼來發送數據?你能顯示幾行代碼嗎?套接字庫本身是8位清理的,不會改變位,但是您可能正在使用中間流或類似文件的對象,它正在進行通用換行解釋。 – 2011-12-19 23:36:33
例如,你是否使用'socket.makefile()'而不使用模式''wb''? – 2011-12-19 23:40:51