基于TCP/UDP的Socket编程

IDC服务

基于TCP/UDP的Socket编程

2024-11-01 01:15


在进行网络编程时,基于TCP和UDP的Socket编程是实现计算机间数据通信的关键方式。下面将详细介绍如何使用Python进行TCP和UDP的Socket编程,并对每段代码进行深入解析。 ? TCP Socket编程

                                            




在进行网络编程时,基于TCP和UDP的Socket编程是实现计算机间数据通信的关键方式。下面将详细介绍如何使用Python进行TCP和UDP的Socket编程,并对每段代码进行深入解析。


? TCP Socket编程

? 步骤一:创建TCP Socket

import socket

# 创建TCP Socket
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

解释

  • import socket:导入Python内置的 socket库,用于网络通信。
  • socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    • socket.AF_INET:表示使用IPv4地址族。
    • socket.SOCK_STREAM:表示使用TCP协议,面向连接的流式服务。
  • tcp_socket:这是创建的TCP套接字对象,用于后续的连接和通信。

? 步骤二:连接到服务器

# 服务器地址和端口
server_address = ('127.0.0.1', 8888)

# 连接到服务器
tcp_socket.connect(server_address)

解释

  • server_address:定义服务器的IP地址和端口号。
    • '127.0.0.1':表示本地主机。
    • 8888:服务器监听的端口号。
  • tcp_socket.connect(server_address):尝试与指定的服务器建立TCP连接。

? 步骤三:发送数据

# 发送数据
data = "Hello, server!"
tcp_socket.send(data.encode())

解释

  • data = "Hello, server!":要发送的字符串消息。
  • data.encode():将字符串编码为字节类型,便于网络传输。
  • tcp_socket.send():通过套接字发送数据到服务器。

? 步骤四:接收数据

# 接收数据
response = tcp_socket.recv(1024)
print(response.decode())

解释

  • tcp_socket.recv(1024):从服务器接收数据,最大接收字节数为1024。
  • response.decode():将接收到的字节数据解码为字符串。
  • print():输出服务器的响应信息。

? 步骤五:关闭TCP Socket

# 关闭TCP Socket
tcp_socket.close()

解释

  • tcp_socket.close():关闭套接字,释放资源。

? UDP Socket编程

? 步骤一:创建UDP Socket

import socket

# 创建UDP Socket
udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

解释

  • socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    • socket.SOCK_DGRAM:表示使用UDP协议,无连接的报文服务。
  • udp_socket:创建的UDP套接字对象。

? 步骤二:绑定本地地址和端口

# 本地地址和端口
local_address = ('127.0.0.1', 8888)

# 绑定地址和端口
udp_socket.bind(local_address)

解释

  • local_address:定义本地IP地址和端口,用于接收数据。
  • udp_socket.bind(local_address):绑定套接字到指定的网络接口和端口。

? 步骤三:发送数据

# 发送数据
server_address = ('127.0.0.1', 9999)
data = "Hello, server!"
udp_socket.sendto(data.encode(), server_address)

解释

  • server_address:目标服务器的IP地址和端口。
  • udp_socket.sendto():使用UDP套接字发送数据到指定的地址。
  • data.encode():将字符串消息编码为字节。

? 步骤四:接收数据

# 接收数据
response, server_address = udp_socket.recvfrom(1024)
print(response.decode())

解释

  • udp_socket.recvfrom(1024):接收数据,返回值是元组,包含数据和发送者的地址。
  • response.decode():解码接收到的字节数据。
  • server_address:发送数据的服务器地址。

? 步骤五:关闭UDP Socket

# 关闭UDP Socket
udp_socket.close()

解释

  • udp_socket.close():关闭UDP套接字。

? TCP与UDP的区别

<
标签:
  • TCP
  • UDP
  • Socket
© 蓝易云.
协议 特点 适用场景
TCP 面向连接,提供可靠的数据传输,保证数据顺序。 文件传输、邮件发送等需要可靠性的通信。
UDP 无连接,数据传输不可靠,但速度快,开销小。 视频直播、在线游戏等对实时性要求高的场景。