socket 编程基础入门

描述

Socket 编程基础入门

在计算机网络中,Socket 是一个抽象层,它将网络通信的细节隐藏起来,为开发者提供了一个简单的接口来发送和接收数据。Socket 编程是网络编程的基础,它允许程序之间进行通信。本文将带你入门 Socket 编程,帮助你理解基本概念和步骤。

1. Socket 的基本概念

Socket 是一个通信端点,它允许程序发送和接收数据。在 TCP/IP 协议族中,有两种主要类型的 Socket:流式 Socket(Stream Sockets,基于 TCP)和数据报 Socket(Datagram Sockets,基于 UDP)。

  • 流式 Socket(TCP) :提供面向连接、可靠的字节流服务。数据传输是有序的,并且保证数据的完整性。
  • 数据报 Socket(UDP) :提供无连接服务,数据包可能丢失或乱序到达,但不保证数据的完整性。

2. Socket 编程步骤

Socket 编程通常包括以下几个步骤:

  1. 创建 Socket :在客户端和服务器端都需要创建一个 Socket 对象。
  2. 绑定地址 :服务器端需要将 Socket 绑定到一个 IP 地址和端口号上。
  3. 监听连接 :服务器端需要监听客户端的连接请求。
  4. 接受连接 :服务器端接受客户端的连接请求,建立连接。
  5. 数据传输 :客户端和服务器端可以开始发送和接收数据。
  6. 关闭连接 :数据传输完成后,需要关闭 Socket 连接。

3. TCP Socket 编程示例

下面是一个简单的 TCP Socket 编程示例,包括客户端和服务器端代码。

服务器端代码(Python):
import socket

# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()
port = 9999

# 绑定端口号
server_socket.bind((host, port))

# 设置最大连接数,超过后排队
server_socket.listen(5)

while True:
# 建立客户端连接
client_socket, addr = server_socket.accept()

print(f"连接地址: {str(addr)}")

while True:
# 接收小于 1024 字节的数据
data = client_socket.recv(1024)
if not data:
# 如果没有数据,跳出循环
break
# 发送数据
client_socket.send(data)

# 关闭连接
client_socket.close()
客户端代码(Python):
import socket

# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 获取本地主机名
host = socket.gethostname()
port = 9999

# 连接服务,指定主机和端口
client_socket.connect((host, port))

try:
# 发送数据
message = 'This is the message.'
client_socket.send(message.encode('utf-8'))

# 接收小于 1024 字节的数据
data = client_socket.recv(1024)
print(f"Received: {data.decode('utf-8')}")

finally:
# 关闭连接
client_socket.close()

4. UDP Socket 编程示例

UDP Socket 编程与 TCP 类似,但不需要建立连接。

服务器端代码(Python):
import socket

# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 获取本地主机名
host = socket.gethostname()
port = 9998

# 绑定端口号
server_socket.bind((host, port))

while True:
# 接收数据和客户端地址
data, addr = server_socket.recvfrom(1024)
print(f"Received message: {data} from {addr}")

# 发送数据
server_socket.sendto(data, addr)
客户端代码(Python):
import socket

# 创建 socket 对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 获取本地主机名
host = socket.gethostname()
port = 9998

# 发送数据
message = 'This is a UDP message.'
client_socket.sendto(message.encode('utf-8'), (host, port))

# 接收数据
data, server = client_socket.recvfrom(1024)
print(f"Received: {data.decode('utf-8')} from {server}")

# 关闭连接
client_socket.close()

5. 总结

Socket 编程是网络编程的基础,通过本文的介绍,你应该对 Socket 的基本概念和编程步骤有了初步的了解。无论是 TCP 还是 UDP,Socket 都提供了一个简单的接口来实现网络通信。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分