首页 > 其他分享 >使用socket库创建简单的客户端和服务器

使用socket库创建简单的客户端和服务器

时间:2024-11-01 10:19:36浏览次数:5  
标签:__ socket server client 服务器 客户端

以下是使用Python的socket库创建简单的客户端和服务器的示例。这个示例将展示如何建立一个基本的TCP连接,服务器接收数据并发送响应,客户端发送数据并接收响应。

服务器端代码

首先,我们编写服务器端代码,它将监听来自客户端的连接请求:

import socket  

def start_server():  
    # 创建一个socket对象  
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

    # 获取本地主机名和设置端口号  
    host = '127.0.0.1'  
    port = 65432  

    # 绑定socket到指定的地址和端口  
    server_socket.bind((host, port))  

    # 开始监听(可以接受连接的最大数量为1)  
    server_socket.listen(1)  
    print(f"服务器正在运行,监听 {host}:{port}")  

    while True:  
        # 接受客户端的连接  
        client_socket, addr = server_socket.accept()  
        print(f"接收到来自{addr}的连接")  

        # 接收客户端发送的数据  
        data = client_socket.recv(1024).decode()  
        print(f"接收到的数据: {data}")  

        # 发送响应  
        response = f"你好,客户端! 你发送了: {data}"  
        client_socket.send(response.encode())  

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

if __name__ == "__main__":  
    start_server()

客户端代码

接下来,我们编写客户端代码,它将连接到服务器并发送数据:

import socket  

def start_client():  
    # 创建一个socket对象  
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

    # 设置服务器的主机名和端口号  
    host = '127.0.0.1'  
    port = 65432  

    # 连接到服务器  
    client_socket.connect((host, port))  
    print(f"已连接到服务器 {host}:{port}")  

    # 发送数据  
    message = "您好,服务器!"  
    client_socket.send(message.encode())  
    print(f"发送的数据: {message}")  

    # 接收服务器的响应  
    response = client_socket.recv(1024).decode()  
    print(f"接收到的响应: {response}")  

    # 关闭连接  
    client_socket.close()  

if __name__ == "__main__":  
    start_client()

使用说明

  1. 运行服务器

    • 将服务器端代码保存到一个文件中,例如 server.py
    • 在命令行中运行 python server.py 启动服务器。
  2. 运行客户端

    • 将客户端代码保存到另一个文件中,例如 client.py
    • 在另一个命令行窗口中运行 python client.py 启动客户端。

结果

  • 服务器会显示接收到的数据以及客户端的连接信息。
  • 客户端会显示其发送的消息以及服务器的响应。

通过上述代码示例,您可以了解到如何使用Python的socket库创建基本的TCP客户端和服务器。可以根据需要扩展代码,比如添加异常处理、支持多客户端连接等。

标签:__,socket,server,client,服务器,客户端
From: https://blog.csdn.net/qq_25699299/article/details/143425495

相关文章

  • 终极对决!Tomcat 服务器压缩性能哪家强?Gzip、Brotli、Zstd 全面测评
    Tomcat服务器的三种压缩测评!!!三万字长文,现在这同样的文章在csdn不多了,家人们点点赞!!!欢迎订阅专栏,永不收费,hacker精神,更快获得第一手优质博文!!!Tomcat服务器三种压缩方式测评:Gzip、Brotli、Zstd在Web服务领域,数据压缩对于提升网站性能至关重要。通过压缩服务器响应......
  • 关于使用Ubuntu搭建僵尸毁灭工程服务器
    1.安装lib32stdc++6来支持32bit程序指令:sudoapt-getinstalllib32stdc++6lib32stdc++6是C++标准库的一个32位版本,主要用于在64位的Ubuntu系统上运行需要32位库支持的应用程序或软件。为什么要安装呢?因为linux系统的steam只有32位。2.下载解压运行并登录steam(如果一些命令......
  • 云服务器该如何选择?云服务器和轻量应用服务器的区别?
    云服务器主要有两种,轻量应用服务器(Lighthouse)和云服务器(CVM)。许多新接触云的同学,经常在选购时会遇到困惑,毕竟Lighthouse的价格确实相对会低一些,想买但又担心在使用过程中会遇到坑,毕竟在过往的认识当中,云服务器才是企业使用的主流产品。其实二者在多个方面都存在着差异,这些......
  • A股\美股\港股 WebSocket实时行情接口接入
    Websocket行情接入请按照下面的步骤完成沪深、港股或美股的行情接入。原文地址:https://jvquant.com/wiki.html#websocket-分配服务器为实现更好的用户体验,系统将自动为您分配合适的服务器。注意:每次分配的服务器地址会发生变化,连接服务前,请务必调用该接口获取最新的服务器地......
  • 3. 使用Docker部署MQTT平台mosquitto到云服务器
    3.使用Docker部署MQTT平台mosquitto到云服务器1.拉取MosquittoDocker镜像(这里选择拉取1.6.14版本,因为最新版本报错Addressnotavailable)dockerpulleclipse-mosquitto#或者拉取1.6.14版本dockerpulleclipse-mosquitto:1.6.142.创建mosquitto配置文件在运......
  • 网络编程-socket
    1.什么是socket?socket的意愿是“插座”,在计算机通信领域,socket被翻译为“套接字”,他是计算机之间进行通信的一种约定或者一种方式,通过socket这种约定,一台计算机可以接受其他计算机的数据,也可以向其他计算机发送数据。我们把插头插到插座上就能从电网获得电力供应,同样,为了远程......
  • socket在python下的使用
    socket在python下的使用-创建套接字对象-套接字对象方法-socket缓冲区与阻塞-粘包(数据的无边界性)-案例之模拟ssh命令-案例之文件上传1.1创建套接字对象Linux中的一切都是文件,每个文件都有一个整数类型的文件描述符;socket也可以视为一个文件对象,也有文件描述符。im......
  • 24小时搜书网站及zlibrary中文镜像网站/客户端app(更新中)
    24小时搜书网站是一个基于IPFS的电子书搜索引擎,它提供了丰富的电子书资源,覆盖文学、心理、艺术、设计、小说等多个领域。以下是该网站的一些主要特点:资源丰富:24小时搜书网站收录了超过12.7万本图书,支持通过书名、作者、出版社、ISBN编号等多种方式进行搜索。多种格式下载:用户可......
  • 智慧园区算法视频分析服务器区域入侵算法:开源免费的目标检测模型及关键特性
    在人工智能和计算机视觉领域,目标检测技术已成为理解和分析视频内容的关键。随着深度学习技术的不断进步,一系列优秀的开源目标检测模型应运而生,它们在提高检测精度和效率方面发挥着重要作用。这些模型不仅推动了学术界的发展,也为工业界提供了强大的工具。以下是一些在开源社区中广......
  • uniapp - 详细实现移动端公众号 H5 网页授权登录流程及示例代码,申请测试公众号全流程
    前言Vue版本,请访问这篇文章。在uni-appH5网站平台开发中,详解微信公众号网页接入微信授权登录示例代码,附带申请测试公众号全流程及配置教程,提供前端h5页面公众号网页实现授权登陆并获取用户昵称头像数据的示例源码,用自己项目跑出来的本地局域网IP段就可以拉起公众......