IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> python实现socket编程,服务端开启多线程(和多个客户端聊天) -> 正文阅读

[系统运维]python实现socket编程,服务端开启多线程(和多个客户端聊天)

首先运行服务端,待服务端运行起来之后,最后开始运行客户端进行对话,可以运行多个客户端和服务端对话,注意这个开启的客户端的顺序和服务端的聊天顺序(其实就是阻塞,待上一个客户端和服务端的一段对话结束之后,开启另外一个客户端和服务端的对话)。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
客户端:


import os
import cv2
import socket

remote_IP='127.0.0.1'
remote_port=5555

remote_addr=(remote_IP,remote_port)
socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
socket.connect(remote_addr)

def client_send_recv(socket):
    """
    :param socket: 客户端套接字
    :return:
    """
    while True:
        print('结束对话: (Q)')
        str=input('请输入发送给服务端的内容对话内容: ')
        if str=='Q' or str=='q':
            str = str.encode('utf-8')
            socket.send(str)
            print('客户端结束对话')
            break
        else:
            str=str.encode('utf-8')
            socket.send(str)
        str=socket.recv(1024).decode('utf-8')
        if str == 'Q' or str == 'q':
            print('服务器结束对话')
            break
        print('接收来自服务端发送的内容: {}'.format(str))
    socket.close()

if __name__=='__main__':
    client_send_recv(socket)



服务端:

import os
import cv2
import socket
import threading

remote_IP='127.0.0.1'
remote_port=5555

remote_addr=(remote_IP,remote_port)
socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#绑定IP地址和端口号
socket.bind(remote_addr)
#监听来自客户端的信息
socket.listen()
print('正在监听来自客户端的信息......')

IsConnection=True
def server_send_recv(new_socket,addr):
    """
    :param new_socket:
    :return:
    """
    global  IsConnection
    while True:
        print('结束对话: (Q or q)')
        str=new_socket.recv(1024).decode('utf-8')
        if str=='Q' or str=='q':
            print('服务器结束对话')
            IsConnection=False
            break
        else:
            print(str)
        str=input('请输入发送给客户端的内容对话内容: ')
        str=str.encode('utf-8')
        new_socket.send(str)
        if str=='q' or str=='Q':
            print('服务器对话结束')
            IsConnection = False
            break

    new_socket.close()

if __name__=='__main__':
    while True:
        # new_socket用于与客户机的对话
        new_socket, addr = socket.accept()
        thread_server=threading.Thread(target=server_send_recv,args=(new_socket,addr))
        thread_server.start()
        if IsConnection==False:
            break

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-02-09 21:08:06  更:2022-02-09 21:10:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 5:39:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码