zoukankan      html  css  js  c++  java
  • python_way ,day9 socket 和soctet多线程的使用

    1、socket的基础 tcp/ip 

    tcp ip 协议是主机接入互联网以及接入互联网互联两台主机通信互联标准
     
     
    物理层:传输二进制
    链路层:对二进制数进行分组  ,唯一标示一台主机
                  数据帧组成:包头:18个字节 原地址,目标地址,数据类型 ,   数据:最大1500字节
     
    网络层:跑的ip协议,可以让各个子网之间进行通信  ,标示两台主机的ip地址
    传输层:tcp/tdp,标示端口号:应用程序
    会话层:
    表示层
    应用层
     
    soctet:就是对tcp/ip协议的封装
    socket只是对要发送的数据进行处理,实际发送还是要背后的tcp,udp协议。
     
     

    2、socket用法

    举个例子:

    买手机
    s= socket.socket()
    绑定:
      
    开机:
    s.listen(5)
    等待电话:
    conn,addr = s.accept()
    conn:就是一个服务端与特定的客户端之间建立的通信的线
    addr:客户端地址
    收消息
    recv_data = conn.recv(1024)
    发消息 
    send_data  = recv_data.upper()
    conn.send(send_data)

    注意:

    2.7 可发送 字符串
    3.0以后要发比特流
    服务端:
    不用指定字符编码,因为客户端发过来的是比特流,所以客户端就返回比特流

    3、socket多线程的使用

    import socketserver
    import subprocess
    class MyServer(socketserver.BaseRequestHandler):
        def handle(self):
            # print self.request,self.client_address,self.server
            self.request.sendall(bytes('欢迎致电 10086,请输入1xxx,0转人工服务.',encoding="utf-8"))
            while True:
                data = self.request.recv(1024)
                if len(data) == 0:break
                print("[%s] says:%s" % (self.client_address,data.decode() ))
                #self.request.sendall(data.upper())
                cmd = subprocess.Popen(data.decode(),shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
                cmd_res =cmd.stdout.read()
                if not cmd_res:
                   cmd_res = cmd.stderr.read()
                if len(cmd_res) == 0: #cmd has not output 
                   cmd_res = bytes("cmd has output",encoding="utf-8")
                self.request.send(cmd_res )
    socket多线程
  • 相关阅读:
    iOS开发UI篇—UIScrollView控件介绍
    iOS开发UI篇—iOS开发中三种简单的动画设置
    iOS开发UI篇—iOS开发中Xcode的一些使用技巧
    iOS开发UI篇—在ImageView中添加按钮以及Tag的参数说明
    iOS开发UI篇—KVC简单介绍
    iOS开发UI篇—从代码的逐步优化看MVC
    iOS开发UI篇—xib的简单使用
    iOS开发UI篇—字典转模型
    iOS开发UI篇—九宫格坐标计算
    A1005. Spell It Right
  • 原文地址:https://www.cnblogs.com/python-way/p/5655108.html
Copyright © 2011-2022 走看看