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:

  • 相关阅读:
    关于matplotlib绘制直方图偏移的问题
    XP下 无法定位程序输入点WSAPoll于动态链接库ws2_32.dll 的解决办法
    Ubuntu 拨号上网及校园网开启IPV6
    php性能优化
    Mac OS X 10.11.6 重置root密码
    php 接口类与抽象类的实际作用
    Redis Cluster集群的搭建与实践
    nginx 反向代理 取得真实IP和域名
    mysql主从配置,出错
    mycat水平分片规则
  • 原文地址:https://www.cnblogs.com/yard/p/5543730.html
Copyright © 2011-2022 走看看