提示信息

Socket的定义与客户端、服务端编写步骤

韦前庆 已关注

Socket是网络编程中的一个重要概念,用于实现不同计算机之间的通信。它可以看作是一个通信端点,通过网络发送和接收数据。Socket编程广泛应用于客户端-服务器模型中。

Socket定义

  • Socket:一种用于通信的抽象,由网络协议栈提供支持。主要分为流式套接字(TCP)和数据报套接字(UDP)。
    • 流式套接字(TCP):提供面向连接的、可靠、双向的字节流通信。
    • 数据报套接字(UDP):提供面向无连接的、简单的消息传递服务。

客户端编写步骤

  1. 创建Socket

    • 通过调用socket()函数创建一个新的Socket。
    • 指定地址族(如IPv4/IPv6)、套接字类型(TCP/UDP)和协议。
  2. 连接到服务器

    • 使用connect()函数连接到服务器端套接字。
    • 需要指定服务器的IP地址和端口号。
  3. 发送和接收数据

    • 使用send()sendall()函数将数据发送到服务器。
    • 使用recv()函数接收服务器发送的数据。
  4. 关闭Socket

    • 使用close()函数关闭Socket连接。

服务端编写步骤

  1. 创建Socket

    • 与客户端类似,使用socket()函数创建Socket,准备监听客户端的连接请求。
  2. 绑定Socket

    • 使用bind()函数将Socket绑定到服务器ip和端口。
  3. 监听连接

    • 使用listen()函数使Socket进入监听状态,准备接收客户端连接。
    • 指定最大连接数。
  4. 接受连接

    • 使用accept()函数阻塞等待并接受客户端的连接请求。
    • 返回一个新的套接字对象和客户端地址。
  5. 发送和接收数据

    • 可使用与客户端类似的send()recv()函数来发送和接收数据。
  6. 关闭连接

    • 使用close()关闭与客户端的连接。
    • 可继续接受新的连接请求。

示例代码

客户端代码示例(Python)

  1. import socket
  2. def client_program():
  3. client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  4. server_address = ('localhost', 12345)
  5. try:
  6. client_socket.connect(server_address)
  7. message = "Hello, Server!"
  8. client_socket.sendall(message.encode())
  9. response = client_socket.recv(1024)
  10. print("Received from server:", response.decode())
  11. finally:
  12. client_socket.close()
  13. client_program()

服务端代码示例(Python)

  1. import socket
  2. def server_program():
  3. server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  4. server_address = ('localhost', 12345)
  5. server_socket.bind(server_address)
  6. server_socket.listen(5)
  7. print("Server is listening...")
  8. while True:
  9. client_socket, client_address = server_socket.accept()
  10. print("Connection from:", client_address)
  11. data = client_socket.recv(1024).decode()
  12. print("Received from client:", data)
  13. response = "Hello from server"
  14. client_socket.sendall(response.encode())
  15. client_socket.close()
  16. server_program()

这些步骤和代码提供了一个基础的客户端/服务端Socket通信的模型,可以根据具体需求进行扩展和修改。

    遇到难题? "AI大模型GPT4.0、GPT" 是你的私人解答专家! 点击按钮去提问......
韦前庆 关注 已关注

最近一次登录:2024-11-20 12:53:43   

暂时还没有签名,请关注我或评论我的文章
×
免费图表工具,画流程图、架构图