编程套接字时如何区分tcp/udp

duc*_*cin 12 python sockets udp tcp

以下是一个python套接字片段:

import socket
socket.socket(socket.AF_INET, socket.SOCK_STREAM)
Run Code Online (Sandbox Code Playgroud)

我的问题是:线路状态是否通过TCP/IP传输套接字连接?到目前为止,我只使用上面的行编写TCP连接,但可能我没有意识到这一事实.我能使用python套接字编程UDP连接吗?如何区分传输层?

这个问题与python没有严格的联系,在c ++或其他任何方面都欢迎解释.

Mar*_*ers 13

第二个参数确定套接字类型; socket.SOCK_DGRAM是UDP,socket.SOCK_STREAM是一个TCP套接字.这一切都为您提供了一个AF_INETAF_INET6套接字系列.

在继续之前,也许你想去阅读Python套接字编程HOWTO,以及其他套接字编程教程.UDP和TCP套接字之间的差异相当大,但差异在编程语言之间转换.

有关Python Wiki上套接字的一些信息:


pra*_*890 6

创建套接字的一般语法是:

socket(socket_family, socket_type, protocol=0)
Run Code Online (Sandbox Code Playgroud)

我们可以使用AF_INET(用于IPv4)或AF_INET6(IPv6)作为第一个参数i.,e用于socket_family.

socket_type是确定要创建的套接字是TCP还是UDP的参数.对于TCP套接字,它将是SOCK_STREAM,对于UDP,它将是SOCK_DGRAM(DGRAM - 数据报).最后,我们可以省略protocol参数,将其设置为默认值'0'.

对于TCP套接字,您应该使用服务器套接字的bind(),listen()和accept()方法以及客户端套接字的connect()或connect_ex().而对于UDP套接字,您不需要listen(),accept()和connect()方法(因为TCP套接字是面向连接的套接字,而UDP套接字是连接较少的套接字).

有一些特定的方法可用于UDP分别发送和接收数据包recvfrom()和sendto(),而recv()和send()分别用于TCP.有关TCP和UDP的相应方法的详细信息,请参阅此文档以获取套接字.另外,Wesley Chun的核心Python应用程序编程是一本关于套接字编程的一些非常基础的更好的书.