逆向学习网络篇:通过Socket建立连接并传输数据

本节课在线学习视频(网盘地址,保存后即可免费观看):

​​https://pan.quark.cn/s/992f89f6f1f4​​

在网络编程中,Socket是一种提供不同计算机之间通信的机制。通过Socket,我们可以建立客户端和服务器之间的连接,并实现数据的传输。本文将详细介绍如何使用Socket在客户端和服务器之间建立连接,并进行数据传输。我们将通过几个代码案例来展示这一过程。

1. 服务器端Socket编程

服务器端需要创建一个Socket,绑定到一个特定的IP地址和端口,并监听来自客户端的连接请求。以下是一个简单的TCP服务器端Socket编程示例:

复制代码
import socket

# 创建一个TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP地址和端口
server_socket.bind(('localhost', 12345))

# 开始监听,最大连接数为5
server_socket.listen(5)

print("Server is listening on port 12345...")

while True:
    # 接受客户端连接
    client_socket, client_address = server_socket.accept()
    print(f"Accepted connection from {client_address}")

    # 接收数据
    data = client_socket.recv(1024)
    print(f"Received: {data.decode()}")

    # 发送数据
    response = "Hello, client!".encode()
    client_socket.send(response)

    # 关闭客户端socket
    client_socket.close()
2. 客户端Socket编程

客户端需要创建一个Socket,并尝试连接到服务器的IP地址和端口。一旦连接建立,客户端可以发送和接收数据。以下是一个简单的TCP客户端Socket编程示例:

复制代码
import socket

# 创建一个TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接服务器
client_socket.connect(('localhost', 12345))

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

# 接收数据
data = client_socket.recv(1024)
print(f"Received: {data.decode()}")

# 关闭socket
client_socket.close()
3. 多客户端连接

在实际应用中,服务器通常需要处理多个客户端的连接。以下是一个扩展的服务器端示例,它使用多线程来处理多个客户端连接:

复制代码
import socket
import threading

def handle_client(client_socket):
    # 接收数据
    data = client_socket.recv(1024)
    print(f"Received: {data.decode()}")

    # 发送数据
    response = "Hello, client!".encode()
    client_socket.send(response)

    # 关闭客户端socket
    client_socket.close()

# 创建一个TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定IP地址和端口
server_socket.bind(('localhost', 12345))

# 开始监听,最大连接数为5
server_socket.listen(5)

print("Server is listening on port 12345...")

while True:
    # 接受客户端连接
    client_socket, client_address = server_socket.accept()
    print(f"Accepted connection from {client_address}")

    # 创建新线程处理客户端连接
    client_handler = threading.Thread(target=handle_client, args=(client_socket,))
    client_handler.start()

通过这些代码案例,我们可以看到如何使用Socket在客户端和服务器之间建立连接,并进行数据传输。这些操作是网络编程的基础,对于理解和实现网络应用至关重要。

相关推荐
2601_9679873731 分钟前
安装 Redis 或 Redis Stack
linux·windows·redis·macos·安装
feng_you_ying_li32 分钟前
linux之数据链路层
linux·网络·智能路由器
GeW2 小时前
高端化走到深处,是数据库和Linux的事
linux
国科安芯3 小时前
人在回路中的总线:商业空间站环境控制与生命保障系统CANFD网络的可靠性与功能安全
网络·嵌入式硬件·安全·架构·php·抗辐射
程序员初一3 小时前
Linux 远程桌面有四种做法
linux·ssh
爱吃奥利奥_wen3 小时前
SQL Server 基础语法详解:从建库建表到约束与增删改查
服务器·数据库·oracle
程序开发阿元3 小时前
1C1G 能跑什么:把留常驻服务和不留摆进一张内存表
linux·ssh
国科安芯4 小时前
算力上天之后的电与静:星上边缘计算载荷带外管理网络的低功耗调度与辐射容错
网络·人工智能·嵌入式硬件·安全·边缘计算·低轨卫星·商业航天
wdeok4 小时前
Socket编程UDP-简单的聊天室
网络·网络协议·udp
xbzb6 小时前
自定义 yum 软件源:Linux 上 createrepo,Windows 上纯 Python 也能造
linux·运维·windows·python·yum·createrepo