socket 套接字通信

socket 套接字通信

1、什么是socket

  socket是一个模块,又称套接字,用来封装 互联网协议(应用层以下的层)

 

 

2、socket的作用

  socket可以实现互联网协议应用层以下的层的工作

 

 

 

3、怎么使用socket

  import socket

  写socket套接字:

    Client

    Server

 

  server.py文件内容:

"""
先启动套接字服务端
    注意:
        客户端一次发送,服务端先一次接收,再发送
"""
import socket

# 就好像:买手机
server = socket.socket()

# 绑定手机卡
# ip地址相当于手机号码
server.bind(("127.0.0.1", 9527))

# 半连接池:限制用户的访问数量
server.listen(5)    # 最多5个人坐椅子   实际上==6

# 循环实现可接收多了用户访问
while True:
    # 等待电话接入  --->  客户端
    # conn:指的是服务端通往客户端的管道
    conn, addr = server.accept()

    # 循环实现循环通信
    while True:
        try:    # 监听代码块是否有异常
            # 接听对方讲话的内容
            # data 客户端发送过来的消息
            data = conn.recv(1024)  # 可接收一次1024 bytes的数据
            if data.decode("utf-8") == "q":
                break
            if len(data) == 0:
                break
            print(data)

            # 服务端向客户端发送消息
            res = input("请回复客户端消息>>> ")
            conn.send(res.encode("utf-8"))
        # 捕获异常信息
        except Exception as e:
            # 打印异常
            print(e)
            break


    # 关闭通信,挂电话
    conn.close()

  client.py文件内容:

"""
启动服务端后再启动客户端
"""
import socket

# 买手机
client = socket.socket()

# 拨号
# 客户端的ip,port必须与服务器一致
client.connect(("127.0.0.1", 9527))

# 循环实现可接收多次服务端返回信息以及访问服务端信息
while True:
    send_data = input("请发送服务端消息>>> ")
    # 讲话给对方听
    # 必须发送bytes
    # client.send(b"hello")
    # 或者编码
    client.send(send_data.encode("utf-8"))
    # 客户端收到服务端返回信息
    data = client.recv(1024)
    if data.decode("utf-8") == "q":
        break
    if len(data) == 0:
        break
    print(data)

# 关闭通信,挂电话
client.close()

 

  执行结果自行测试。

posted @ 2020-11-02 22:02  chchcharlie、  阅读(235)  评论(0编辑  收藏  举报