2024-05-16 23:24:06 发布
网友
以下是python套接字片段:
import socket socket.socket(socket.AF_INET, socket.SOCK_STREAM)
我的问题是:线路是否说明套接字连接将通过TCP/IP传输?到目前为止,我只是在编程TCP连接,使用上述行,但可能我不知道这个事实。我能用python套接字编程UDP连接吗?如何区分传输层?
这个问题与python没有严格的联系,在c++或其他语言中也欢迎解释。
第二个参数确定套接字类型;socket.SOCK_DGRAM是UDP,socket.SOCK_STREAM是TCP套接字。如果您使用的是一个AF_INET或AF_INET6套接字系列,那么这一切都是假设的。
socket.SOCK_DGRAM
socket.SOCK_STREAM
AF_INET
AF_INET6
在继续之前,您可能想阅读Python socket programming HOWTO,以及其他套接字编程教程。UDP和TCP套接字之间的差异相当大,但是这些差异可以跨编程语言进行转换。
关于Python Wiki上的套接字的一些信息:
创建套接字的一般语法为:
socket(socket_family, socket_type, protocol=0)
我们可以使用AF_INET(对于IPv4)或AF_INET6(IPv6)作为第一个参数,即用于socket_family。
socket_family
socket_type是决定要创建的套接字是TCP还是UDP的参数。对于TCP套接字,它将是SOCK_STREAM;对于UDP,它将是SOCK_DGRAM(DGRAM-datagram)。最后,我们可以省略protocol参数,该参数将其设置为0的默认值。
socket_type
SOCK_STREAM
SOCK_DGRAM
0
对于TCP套接字,应该为服务器套接字使用bind()、listen()和accept()方法,为客户端套接字使用connect()或connect_ex()方法。而对于UDP套接字,则不需要listen()、accept()和connect()方法(因为TCP套接字是面向连接的套接字,而UDP套接字是无连接的套接字)。
bind()
listen()
accept()
connect()
connect_ex()
UDP可以使用特定的方法发送和接收数据包recvfrom()和sendto(),而recv()和send()则用于TCP。有关TCP和UDP各自方法的详细信息,请参阅documentation for socket。另外,Core Python Applications Programming by Wesley Chun是一本关于套接字编程的基础知识的更好的书。
recvfrom()
sendto()
recv()
send()
主要区别在于TCP套接字是基于连接的。在连接到远程计算机上的另一个TCP套接字之前,无法发送或接收任何内容。连接后,TCP套接字只能向远程计算机发送和接收数据。这意味着您的应用程序中的每个客户端都需要一个TCP套接字。 UDP不是基于连接的,您可以使用同一个套接字随时向任何人发送和接收数据。
~Muralidhar gundala
第二个参数确定套接字类型;
socket.SOCK_DGRAM
是UDP,socket.SOCK_STREAM
是TCP套接字。如果您使用的是一个AF_INET
或AF_INET6
套接字系列,那么这一切都是假设的。在继续之前,您可能想阅读Python socket programming HOWTO,以及其他套接字编程教程。UDP和TCP套接字之间的差异相当大,但是这些差异可以跨编程语言进行转换。
关于Python Wiki上的套接字的一些信息:
创建套接字的一般语法为:
我们可以使用
AF_INET
(对于IPv4)或AF_INET6
(IPv6)作为第一个参数,即用于socket_family
。socket_type
是决定要创建的套接字是TCP还是UDP的参数。对于TCP套接字,它将是SOCK_STREAM
;对于UDP,它将是SOCK_DGRAM
(DGRAM-datagram)。最后,我们可以省略protocol参数,该参数将其设置为0
的默认值。对于TCP套接字,应该为服务器套接字使用
bind()
、listen()
和accept()
方法,为客户端套接字使用connect()
或connect_ex()
方法。而对于UDP套接字,则不需要listen()
、accept()
和connect()
方法(因为TCP套接字是面向连接的套接字,而UDP套接字是无连接的套接字)。UDP可以使用特定的方法发送和接收数据包
recvfrom()
和sendto()
,而recv()
和send()
则用于TCP。有关TCP和UDP各自方法的详细信息,请参阅documentation for socket。另外,Core Python Applications Programming by Wesley Chun是一本关于套接字编程的基础知识的更好的书。主要区别在于TCP套接字是基于连接的。在连接到远程计算机上的另一个TCP套接字之前,无法发送或接收任何内容。连接后,TCP套接字只能向远程计算机发送和接收数据。这意味着您的应用程序中的每个客户端都需要一个TCP套接字。 UDP不是基于连接的,您可以使用同一个套接字随时向任何人发送和接收数据。
~Muralidhar gundala
相关问题 更多 >
编程相关推荐