zoukankan      html  css  js  c++  java
  • 第64天python学习socket收发消息原理

    socket收发消息原理

    内存:分为内核态和用户态。应用程序运行都是进过内存实现的

    三层结构:应用软件     os     硬件

     操作系统代码一直存在内存内核态中        应用程序用户态内存

     备注:数据收发取值是从缓存里面取值的,内存一部分是内核态内容,一部分是用户态内容

     服务器:

    import socket
    ip_port=('127.0.0.1',8080)#电话卡
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #买手机
    s.bind(ip_port) #手机插卡
    s.listen(5)     #手机待机,监听最多五个
    
    while True:                         #新增接收链接循环,可以不停的接电话
        conn,addr=s.accept()            #手机接电话
        print('接到来自%s的电话' %addr[0])
        while True:                         #新增通信循环,可以不断的通信,收发消息
            msg=conn.recv(BUFSIZE)             #听消息,听话
    
            # if len(msg) == 0:break        #如果不加,那么正在链接的客户端突然断开,recv便不再阻塞,死循环发生
    
            print(msg,type(msg))
    
            conn.send(msg.upper())          #发消息,说话
    
        conn.close()                    #挂电话
    
    s.close()                       #手机关机


    客户端:
    import socket
    ip_port=('127.0.0.1',8081)
    s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    s.connect_ex(ip_port)           #拨电话
    
    while True:                             #新增通信循环,客户端可以不断发收消息
        msg=input('>>: ').strip()
        if len(msg) == 0:continue
        s.send(msg.encode('utf-8'))         #发消息,说话(只能发送字节类型)
    
        feedback=s.recv(BUFSIZE)                           #收消息,听话
        print(feedback.decode('utf-8'))
    
    s.close()                                       #挂电话


  • 相关阅读:
    Markdown入门
    JavaScript之bind,call,apply
    CentOS7中禁用IPV6
    How to install Shadow•socks in CentOS7
    How to install OpenBazaar Server in CentOS7
    array_map,array_walk的使用以及区别
    phpstudy 升级mysql 及MySQL服务等问题
    YII2 架构文章链接
    nginx 配置详解(新手必看)
    YII2常用笔记
  • 原文地址:https://www.cnblogs.com/jianchixuexu/p/11862985.html
Copyright © 2011-2022 走看看