14

以下は、python ソケット スニペットです。

import socket
socket.socket(socket.AF_INET, socket.SOCK_STREAM)

私の質問は次のとおりです。行は、ソケット接続が TCP/IP 経由で転送されることを示していますか? これまでのところ、上記の行を使用して TCP 接続のみをプログラミングしていましたが、おそらくその事実に気づいていませんでした。Python ソケットを使用して UDP 接続をプログラムできますか? トランスポート層を区別するにはどうすればよいですか?

質問は python に厳密に接続されているわけではありません。説明は c++ などでも大歓迎です。

4

3 に答える 3

16

2 番目の引数は、ソケットのタイプを決定します。socket.SOCK_DGRAMはUDP、socket.SOCK_STREAMはTCPソケットです。AF_INETまたはAF_INET6ソケットファミリを使用している場合、これはすべてです。

続行する前に、 Python ソケット プログラミング HOWTOやその他のソケット プログラミング チュートリアルを読みたいと思うかもしれません。UDP ソケットと TCP ソケットの違いはかなり大きいですが、その違いはプログラミング言語全体に反映されます。

Python Wiki のソケットに関する情報:

于 2013-11-01T13:23:41.587 に答える
7

ソケットを作成するための一般的な構文は次のとおりです。

socket(socket_family, socket_type, protocol=0)

AF_INET(IPv4 の場合) またはAF_INET6(IPv6) のいずれかを最初の引数として使用できますsocket_family

socket_type、作成するソケットが TCP か UDP かを決定する引数です。TCP ソケットの場合は にSOCK_STREAMなり、UDP の場合はSOCK_DGRAM(DGRAM - データグラム) になります。最後に、デフォルト値の に設定する protocol 引数を省略できます0

TCP ソケットの場合は、サーバー ソケットおよび/またはクライアント ソケット用bind()listen()およびaccept()メソッドを使用する必要があります。一方、UDP ソケットの場合は 、 メソッドは必要ありません( TCPソケットは接続指向のソケットであり、UDP ソケットは接続のないソケットであるため)。connect()connect_ex()listen()accept()connect()

UDP がパケットを送受信するために利用できる特定のメソッドがありrecvfrom()sendto()それぞれ whilerecv()およびsend()TCP 用です。TCP と UDP のそれぞれの方法の詳細については、ソケットのこのドキュメントを参照してください。また、Wesley Chun による Core Python Applications Programmingは、ソケット プログラミングのかなりの基本についてのより良い本です。

于 2013-11-01T14:28:30.900 に答える