zoukankan      html  css  js  c++  java
  • Python学习笔记——基础篇【第七周】———进程、线程、协程篇(socket基础)

    http://www.cnblogs.com/wupeiqi/articles/5040823.htmlhttp://i.cnblogs.com/EditPosts.aspx?postid=5543730

     scoket基础

    client端口最多有65535  2**16

    在三次握手执行完之后,所有的通信都是基于socket来完成的

    不管是http、dns、ftp、smtp、ssl、mysql都是基于socket实现的

    可以认为socket是一条管道或者高速公路,对于http、dns等是一辆车

    socket也叫套接字,用于描述IP和端口,app通常通过scoket向网络发出请求或者应答网络请求

    socket连续交互通信

    server端代码

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    import socket
    
    ip_port = ('127.0.0.1',9999)
    
    sk = socket.socket()   #默认TCP/IP协议
    sk.bind(ip_port)   #以元祖形式传进来,绑定IP端口
    sk.listen(5)   #监听
    
    while True:
        print('server waiting...')
        conn,addr = sk.accept()  #等待链接进来
        client_data = conn.recv(1024)
        print(str(client_data,'utf8'))
        conn.sendall(bytes('不要回答,不要回答,不要回答','utf8'))
        conn.close()
    socket_server
     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 import socket
     4 
     5 ip_port = ('127.0.0.1',9999)
     6 
     7 sk = socket.socket()   #默认TCP/IP协议
     8 sk.bind(ip_port)   #以元祖形式传进来,绑定IP端口
     9 sk.listen(5)   #监听
    10 
    11 while True:
    12     try:
    13     print('server waiting...')
    14     conn,addr = sk.accept()  #等待链接进来
    15     client_data = conn.recv(1024)
    16     print(str(client_data,'utf8'))
    17     conn.sendall(bytes('不要回答,不要回答,不要回答','utf8'))
    18     while True:
    19         try:
    20             client_data = conn.recv(1024)
    21             if not client_data:
    22                 break
    23         except Exception:
    24             break
    25         print(str(client_data, 'utf8'))
    26         # server_response = input("33[31;1m>>:33[0m").strip()
    27         # conn.send(bytes(server_response,'utf8'))
    28         conn.send(client_data)
    29 
    30     conn.close()
    scoket_server2

    client端代码

     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 import socket
     4 ip_port = ('127.0.0.1',9999)
     5 
     6 sk = socket.socket()
     7 sk.connect(ip_port)
     8 
     9 sk.sendall(bytes('请求占领地球','utf8'))
    10 
    11 server_reply = sk.recv(1024)
    12 print(str(server_reply,'utf8'))
    13 sk.close()
    scoket_client
     1 #!/usr/bin/env python
     2 # -*- coding:utf-8 -*-
     3 import socket
     4 ip_port = ('127.0.0.1',9999)
     5 
     6 sk = socket.socket()
     7 sk.connect(ip_port)
     8 
     9 sk.sendall(bytes('请求占领地球','utf8'))
    10 
    11 server_reply = sk.recv(1024)
    12 print(str(server_reply,'utf8'))
    13 while True:
    14     user_input=input(">>:").strip()
    15     sk.send(bytes(user_input,'utf8'))
    16     server_reply =sk.recv(1024)
    17     print(str(server_reply, 'utf8'))
    18 sk.close()
    scoket_client2

    python 3的socket坑

    由于以上代码在执行的时候会在Linux和Windows显示的效果不一样

    区别如下:

    Windows:

    Windows也可修改如下,和Linux一样的效果(可以试下,可能不行)

    Linux:

  • 相关阅读:
    React-Native 基本环境的搭建
    initWithFrame 与 initWithCoder 、awakeFromNib 的方法理解笔记
    关于 jwTextFiled 的使用说明
    使用 SourceTree 遇到冲突的解决方法
    如何使用最简单的方法将一个已经存在的工程中使用 cocaPodfile
    使用 NSData 分类实现,对 NSData 数据类型进行 AES 加密
    相机检测
    纯代码适配优化方案之一(内联函数的使用)
    页面跳转问题,多次 push 到新的页面的问题的解决方法
    判断银行卡卡号输入的合法性接口
  • 原文地址:https://www.cnblogs.com/yard/p/5543730.html
Copyright © 2011-2022 走看看