2015-10-16 56 views
-1

這裏是python2代碼:如何檢查插座類型是socket.SOCK_STREAM或socket.SOCK_DGRAM在python3

if type not in (socket.SOCK_STREAM, socket.SOCK_DGRAM): 
    msg = "Socket type must be stream or datagram, not {!r}" 
    raise ValueError(msg.format(type)) 

現在python3沒有正確和插座的官方文檔我見過的工作:

的的AF_*SOCK_*常量現在AddressFamily和SocketKind IntEnum集合。

,但我不明白。

那麼我該如何檢查socket的類型是在socket.SOCK_STREAM還是socket.SOCK_DGRAM在python3中?

+0

「*在python3它不能正常工作*」 - 是什麼錯誤或不正確的行爲,你在Python3看到了什麼? –

+0

請提供簡短的**完整**程序來說明問題。當我插入你的代碼爲[完整的程序(http://ideone.com/gFNOEO),它完美的作品對我來說在任何Python2或Python3。 –

+0

我已經在github上拉的要求,你可以看到在[https://github.com/Anorov/PySocks/pull/31](https://github.com/Anorov/PySocks/pull/31) – wanze

回答

0
$ ipython3 

In [1]: import socket 

In [4]: list(socket.SocketKind) 

Out[4]: 

[<SocketKind.SOCK_RAW: 3>, 
<SocketKind.SOCK_SEQPACKET: 5>, 
<SocketKind.SOCK_STREAM: 1>, 
<SocketKind.SOCK_RDM: 4>, 
<SocketKind.SOCK_DGRAM: 2>] 

,所以我猜它的伎倆:

if type not in (socket.SocketKind.SOCK_STREAM, socket.SocketKind.SOCK_DGRAM) 
+0

' >>>進口socket' '>>> socket.SOCK_STREAM == socket.SocketKind.SOCK_STREAM' TRUE; YES感謝。 – wanze

相關問題