套接字属性
发布人:shili8
发布时间:2024-11-17 01:46
阅读次数:0
**套接字属性**
套接字(Socket)是计算机网络编程中一个非常重要的概念。它是一种抽象的接口,用于不同进程或程序之间的通信。在本文中,我们将讨论套接字的基本属性和特性。
###1. 套接字类型套接字可以分为两大类:TCP套接字(面向连接)和UDP套接字(无连接)。
#### TCP套接字TCP(Transmission Control Protocol)是一种面向连接的协议,它保证数据在传输过程中不丢失、不重复,并且按序到达。TCP套接字使用三次握手建立连接,四次挥手关闭连接。
import socket# 创建一个 TCP 套接字tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
#### UDP套接字UDP(User Datagram Protocol)是一种无连接的协议,它不保证数据在传输过程中不丢失、不重复,并且按序到达。UDP套接字使用一次握手建立连接,关闭连接时不需要进行挥手。
import socket# 创建一个 UDP 套接字udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
###2. 套接字属性套接字有以下几个重要的属性:
####1) 套接字类型(SOCK_STREAM 或 SOCK_DGRAM)
import socket# 获取套接字类型print(tcp_socket.type) # SOCK_STREAMprint(udp_socket.type) # SOCK_DGRAM
####2) 本地地址和端口号
import socket# 绑定本地地址和端口号tcp_socket.bind(('127.0.0.1',12345)) udp_socket.bind(('127.0.0.1',54321)) # 获取本地地址和端口号print(tcp_socket.getsockname()) # ('127.0.0.1',12345) print(udp_socket.getsockname()) # ('127.0.0.1',54321)
####3) 远程地址和端口号
import socket# 连接远程地址和端口号tcp_socket.connect(('127.0.0.1',12345)) udp_socket.connect(('127.0.0.1',54321)) # 获取远程地址和端口号print(tcp_socket.getpeername()) # ('127.0.0.1',12345) print(udp_socket.getpeername()) # ('127.0.0.1',54321)
####4) 套接字状态
import socket# 获取套接字状态print(tcp_socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)) #0print(udp_socket.getsockopt(socket.SOL_SOCKET, socket.SO_ERROR)) #0
###3. 套接字方法套接字有以下几个重要的方法:
####1) listen()
import socket# 监听端口号tcp_socket.listen(5) udp_socket.listen(5)
####2) accept()
import socket# 接受连接conn, addr = tcp_socket.accept() data, addr = udp_socket.recvfrom(1024)
####3) send() 和 recv()
import socket# 发送数据tcp_socket.send(b'Hello, world!') udp_socket.sendto(b'Hello, world!', ('127.0.0.1',12345)) # 接收数据data = tcp_socket.recv(1024) data, addr = udp_socket.recvfrom(1024)
####4) close()
import socket# 关闭套接字tcp_socket.close() udp_socket.close()
### 总结在本文中,我们讨论了套接字的基本属性和特性,包括套接字类型、套接字属性、套接字方法等。通过这些知识,可以更好地理解计算机网络编程中的套接字概念,并且可以使用套接字进行通信。