Socket的定义与客户端、服务端编写步骤
Socket是网络编程中的一个重要概念,用于实现不同计算机之间的通信。它可以看作是一个通信端点,通过网络发送和接收数据。Socket编程广泛应用于客户端-服务器模型中。
Socket定义
- Socket:一种用于通信的抽象,由网络协议栈提供支持。主要分为流式套接字(TCP)和数据报套接字(UDP)。
- 流式套接字(TCP):提供面向连接的、可靠、双向的字节流通信。
- 数据报套接字(UDP):提供面向无连接的、简单的消息传递服务。
客户端编写步骤
创建Socket:
- 通过调用
socket()
函数创建一个新的Socket。 - 指定地址族(如IPv4/IPv6)、套接字类型(TCP/UDP)和协议。
- 通过调用
连接到服务器:
- 使用
connect()
函数连接到服务器端套接字。 - 需要指定服务器的IP地址和端口号。
- 使用
发送和接收数据:
- 使用
send()
或sendall()
函数将数据发送到服务器。 - 使用
recv()
函数接收服务器发送的数据。
- 使用
关闭Socket:
- 使用
close()
函数关闭Socket连接。
- 使用
服务端编写步骤
创建Socket:
- 与客户端类似,使用
socket()
函数创建Socket,准备监听客户端的连接请求。
- 与客户端类似,使用
绑定Socket:
- 使用
bind()
函数将Socket绑定到服务器ip和端口。
- 使用
监听连接:
- 使用
listen()
函数使Socket进入监听状态,准备接收客户端连接。 - 指定最大连接数。
- 使用
接受连接:
- 使用
accept()
函数阻塞等待并接受客户端的连接请求。 - 返回一个新的套接字对象和客户端地址。
- 使用
发送和接收数据:
- 可使用与客户端类似的
send()
和recv()
函数来发送和接收数据。
- 可使用与客户端类似的
关闭连接:
- 使用
close()
关闭与客户端的连接。 - 可继续接受新的连接请求。
- 使用
示例代码
客户端代码示例(Python)
import socket
def client_program():
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
try:
client_socket.connect(server_address)
message = "Hello, Server!"
client_socket.sendall(message.encode())
response = client_socket.recv(1024)
print("Received from server:", response.decode())
finally:
client_socket.close()
client_program()
服务端代码示例(Python)
import socket
def server_program():
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 12345)
server_socket.bind(server_address)
server_socket.listen(5)
print("Server is listening...")
while True:
client_socket, client_address = server_socket.accept()
print("Connection from:", client_address)
data = client_socket.recv(1024).decode()
print("Received from client:", data)
response = "Hello from server"
client_socket.sendall(response.encode())
client_socket.close()
server_program()
这些步骤和代码提供了一个基础的客户端/服务端Socket通信的模型,可以根据具体需求进行扩展和修改。