首页 > 编程语言 >Python Socket编程

Python Socket编程

时间:2023-08-07 17:35:41浏览次数:45  
标签:__ py Socket Python 编程 client socket server 客户端

Socket

客户端

#
#   py_client.py
#   py_learn
#
#   Created by Z. Steve on 2023/8/7 16:36.
#


import socket


def test_client():
    # 1. 创建 socket
    socket_client = socket.socket()
    # 2. 连接到服务器
    socket_client.connect(("localhost", 8091))
    # 3. 发送消息
    while True:
        send_msg = input("请输入你要发送的信息:")
        if send_msg == "exit":
            break
        socket_client.send(send_msg.encode("utf-8"))
        # 接收服务器返回的消息. recv() 方法会阻塞
        data = socket_client.recv(1024 * 2)
        print("服务器返回消息为: ", data.decode("utf-8"))

    # 5. 关闭连接
    socket_client.close()


if __name__ == "__main__":
    test_client()

服务端

  1. 一个服务端可以接收多个客户端请求
#
#   py_server.py
#   py_learn
#
#   Created by Z. Steve on 2023/8/7 16:16.
#

# 0. 导入 socket 模块
import socket


def test_socket():
    # 1. 创建 socket 对象
    socket_server = socket.socket()

    # 2. 绑定 IP 与 port
    ip_port = ("localhost", 8091)
    socket_server.bind(ip_port)

    # 3. 服务端开始监听端口, 参数 5 表示接受的连接数量
    socket_server.listen(5)

    # 4. 接收客户端连接, 获得连接对象; 返回值是一个元组
    # conn, 连接对象; addr, 客户端地址
    # accept() 方法会阻塞,等待客户端连接。
    conn, addr = socket_server.accept();

    print(f"客户端连接成功!客户端信息: {addr}")

    # 5. 接收客户端信息。通过 conn 来获取客户端信息
    # recv() 返回是一个字节数组, 通过 decode("utf-8") 将字节数组解码为字符串
    buf = 1024 * 2

    while True:
        data = conn.recv(buf).decode("utf-8")

        print(f"客户端发来的信息是:{data}")

        # 6. 向客户端发送信息
        msg = input("请输入向客户端发送的信息:")
        if msg == "exit":
            break
        conn.send(msg.encode("utf-8"))  # 字符串在发送前再进行 encode()

    # 7. 关闭连接
    conn.close()
    socket_server.close()


if __name__ == "__main__":
    test_socket()

标签:__,py,Socket,Python,编程,client,socket,server,客户端
From: https://www.cnblogs.com/zxhoo/p/17611975.html

相关文章

  • Python模块-re模块实例
    正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过re模块实现。importre\w与\W\w匹配字母数字及下划线re.findall('\w','helloworld2022_04/24')['......
  • 笔记|聚类分析基础《Python数学实验与建模》
    参考图书为:《Python数学实验与建模》司守奎,孙玺菁定义将相似元素聚为一类通常分为Q型聚类(样本聚类)、R型聚类(指标聚类)。数据变换\(A=\begin{pmatrix}a_{11}&a_{12}&a_{13}&\cdots&a_{1p}\\a_{21}&a_{22}&a_{23}&\cdots&a_{2p}\\a_{31}&a_{32}&a_{33}&\cdots&a......
  • Python&Swift 三元(目)运算
    Python的三元运算写法:is_true=Trueresult='TRUE'ifis_trueelse'FALSE'#output:TRUESwift的三元运算写法:isTrue=trueresult=isTrue?"TRUE":"FALSE"//output:TRUE......
  • python 并行执行
    [python多进程及并行计算:multiprocessing总结&joblib.Parallel函数](https://www.cnblogs.com/dychen/p/15743087.html)背景如果你想在程序中并行执行一段代码,然后得到最后的返回结果,如果使用多进程或者多线程会相对复杂,这里提供一个简单方法这里的例子就是仿照如果......
  • Python基础day61 Django choices参数和Ajax技术简介
    choices参数的使用choices是ORM中常用字段的参数作用:类似于一些字段:性别、学历、客户来源、是否上学、是否结婚等有限较少选择的字段我们在表中存储的时候一般使用choices参数,用数字替代文字。案例classCustomer(models.Model):"""客户表"""qq=m......
  • 一招让你的Python爬虫事半功倍
    在Python爬虫的世界里,你是否也被网站的IP封锁问题困扰过?别担心,我来教你一个简单而又有效的爬虫ip设置方法,让你的爬虫畅行无阻!快来跟我学,让你的Python爬虫事半功倍,轻松搞定IP封锁问题!首先,我们来了解一下爬虫ip是什么?爬虫ip:爬虫ip是指通过中间服务器转发请求并获取响应的一种技术手段......
  • 使用python,利用公网服务器时间更新windows本地时间
    有时候,我们会发现无法连接windows的时间服务器或者内网的时间服务器本身的时间不准。于是,可以通过如下python脚本示例,从公网任意服务器获取其服务器时间,这样更新的时间较为准确。#-*-coding:utf-8-*-importdatetimeimportsubprocessimportrequestsimporttimedefset_......
  • python re将字符串中的数字乘二
    importredefdouble(matched):value=int(matched.group('value'))returnstr(value*2)s='A23G4HFD567'print(re.sub('(?P<value>\d+)',double,s))#1.?P<value>的意思就是命名一个名字为value的组,匹配规则符合后面的/d+#......
  • 一招让你的Python爬虫事半功倍
    在Python爬虫的世界里,你是否也被网站的IP封锁问题困扰过?别担心,我来教你一个简单而又有效的爬虫ip设置方法,让你的爬虫畅行无阻!快来跟我学,让你的Python爬虫事半功倍,轻松搞定IP封锁问题!首先,我们来了解一下爬虫ip是什么?爬虫ip:爬虫ip是指通过中间服务器转发请求并获取响应的一种技术手段......
  • Siemens 西门子S7-200SMART PLC 自编模拟量输入结构化编程并生成库
    说到模拟量,对于从事工控行业的人员并不陌生,在使用S7-200SMARTPLC模拟量时,系统自带模拟考库文件,不需要自己去编写转换程序,直接调用库文件就可以使用了,那么如何通过公式自己编写模拟量输入转换程序呢?接下来就带大家来编写。01模拟量输入转换公式02参数化模拟量输入转换程序......