文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python3 套接字练习

2023-01-31 08:15

关注

练习目的

有随机30个数字
然后分别需要计算
1、这30个数字的 奇偶性 奇数返回True 偶数返回False
2、这30个数字的 2倍
3、这30个数字的 是否大于10
要求用socket分布式部署给三个client来计算
服务端进行数据汇总显示.


服务器端:

#导入模块
import socket
import threading
import random
import time

#创建一个函数来创建套接字
def sock_start():
    #创建一个套接字,并以tcp链接(主机(ip)+端口(port))
    sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    #绑定主机加端口(''空表示任意的主机)
    #绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址
    sock.bind(('',8000))
    #最大打开5个监听,大于5个链接,则等待
    sock.listen(5)
    #死循环一直等待这主机来连接
    while True:
        #有主机来连接,建立连接
        client,address =sock.accept()
        #创建一个套接字
        t = threading.Thread(target=setResponse,args=(client,address))
        #开始运行
        t.start()

    #关闭链接
    sock.close()

def setResponse(sock,address):
    num = 1
    while True:
        info = '''
        是否开启本次作业?
        开启请输入yes
        不开启请输入no
        你直接回车就是默认开启,坏笑!!!
        现在是第 %s 次开始运行!!!!
        '''%num

        #判断是否要运行与客户端的数据交流
        status = input(info)
        if status == 'no':
            print('你不开始我退出了!')
            exit()
        else:
            for i in range(10):
                j = random.randint(1,100)
                #把数字转化为字符串
                data = str(j)
                #加码数据,发送数据给客户端
                sock.send(data.encode('utf-8'))
                time.sleep(1)
                #接受客户端的数据
                msg_rec = sock.recv(1024)
                #解码客户端的数据,并打印出来
                print(msg_rec.decode('utf-8'))
        num +=1
if __name__ == '__main__':
    sock_start()



客户端:

# -*- coding: utf-8 -*-
# File  : 客户端3.py
# Author: HuXianyong
# Date  : 2018-08-23 15:26

import socket,time

my_name = '客户端3'
#创建一个套接字,并以tcp链接(主机(ip)+端口(port))
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#  主动初始化TCP服务器连接,格式为元组(hostname,port)
sock.connect(('127.0.0.1',8000))
while True:
    #接收客户端的数据(数据大小)
    msg_rec = sock.recv(1024)
    #把字符串转化为×××
    num  = int(msg_rec)
    #判断数据的奇偶
    if num%2 == 0:
        sex = '女同志'
    else:
        sex = '男同胞'

    #判断数字是否大于10
    if num <= 10:
        age = '瓜娃子'
    elif 10<num<=20:
        age = '2b小青年'
    elif 20 <num <= 40:
        age = '成家立业,养瓜娃子'
    elif 40< num <=60:
        age = '人到中年'
    else:
        age = '该养老了'

    #生成数据类型
    msg_send = '我是:%s 性别:%s 人生:%s 年龄:%d'%(my_name,sex,age,num*2)
    #加码数据,并发送数据
    sock.send(msg_send.encode('utf-8'))
    time.sleep(1)
    #打印接收到的服务器端的数据
    print(msg_rec.decode('utf-8'))

#关闭连接
sock.close()


我这里要用三个客户端,所以这里的客户端代码复制三次,执行三次:


执行的效果如下:

image.png


阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯