zoukankan      html  css  js  c++  java
  • Python--网络编程-----socket编程示例--打电话

    一、服务端

     1 import socket
     2 
     3 
     4 # 1、买手机
     5 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     6 # print(phone)
     7 
     8 # 2、绑定手机卡
     9 phone.bind(('127.0.0.1', 8080)) # 0-65535:0-1024给操作系统使用
    10 
    11 # 3、开机
    12 phone.listen(5)
    13 
    14 # 4、等电话连接
    15 print('starting.....')
    16 res = phone.accept()
    17 print('=======>')
    18 print(res)

    运行服务端,会卡在res = phone.accept()等待连接

    二、客户端

    1 import socket
    2 
    3 
    4 # 1、买手机
    5 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    6 # print(phone)
    7 
    8 # 2、拨号
    9 phone.connect(('127.0.0.1', 8080))

    先运行服务端,然后运行客户端,结果为:

    1 1 服务端结果为:
    2 2 
    3 3 starting.....
    4 4 =======>
    5 5 (<socket.socket fd=480, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 61788)>, ('127.0.0.1', 61788))

    三、完整的一次通信代码

     1 服务端:
     2 
     3 # 1、买手机
     4 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     5 # print(phone)
     6 
     7 # 2、绑定手机卡
     8 phone.bind(('127.0.0.1', 8080)) # 0-65535:0-1024给操作系统使用
     9 
    10 # 3、开机
    11 phone.listen(5)
    12 
    13 # 4、等电话连接
    14 print('starting.....')
    15 conn, client_addr = phone.accept()
    16 
    17 # 5、收、发信息
    18 data = conn.recv(1024)  # 1、单位:bytes 2、1024代表最大接受1024个bytes
    19 print('客户端的数据', data)
    20 
    21 conn.send(data.upper())
    22 
    23 # 6、挂电话
    24 conn.close()
    25 
    26 # 7、关机
    27 phone.close()
    28 
    29 客户端:
    30 
    31 import socket
    32 
    33 
    34 # 1、买手机
    35 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    36 # print(phone)
    37 
    38 # 2、拨号
    39 phone.connect(('127.0.0.1', 8080))
    40 
    41 # 3、发、收消息
    42 phone.send('hello'.encode('utf-8'))
    43 data = phone.recv(1024)
    44 print(data)
    45 
    46 # 4、关闭
    47 phone.close()

    服务端运行结果为:

    1 starting.....
    2 客户端的数据 b'hello'

    客户端运行结果为:

    1 b'HELLO'
  • 相关阅读:
    Redis底层探秘(二):链表和跳跃表
    Redis底层探秘(一):简单动态字符串(SDS)
    C#进阶之路(六):表达式进行类的赋值
    C#异步编程(五)异步的同步构造
    C#异步编程(四)混合模式线程同步
    C#异步编程(三)内核模式线程同步
    Redis五种数据类型
    C#异步编程(二)用户模式线程同步
    前端面试题整理—jQuery篇
    前端面试题整理—JavaScript篇(一)
  • 原文地址:https://www.cnblogs.com/xudachen/p/8723353.html
Copyright © 2011-2022 走看看