Day18 网络编程

一.套接字Server

1.什么是socket编程

socket又叫套接字, 指的是实现通信的两个端; 这两个端又分为服务器套接字和客户端套接字

2.服务器套接字

python中提供了一个socket模块来支持socket编程

1) 创建套接字对象(买电话机)

socket(family=AF_INET, type=SOCK_STREAM
family - 设置ip类型; AF_INET - ipv4; AF_INET6 - ipv6
type - 设置数据的传输方式; SOCK_STREAM - TCP, SOCK_DGRAM - UDP

server = socket()

2)绑定ip和端口(查电话线)

bind((ip地址, 端口号))

ip地址 - 字符串; 服务器程序运行在哪台计算机上, ip地址就是哪台计算的ip 10.7.181.115
端口号 - 整形; 范围是0~65535, 其中0~1024是著名端口, 有自己特殊的意义一般不随便使用

server.bind(('10.7.181.115', 6628))

3)等待连接并且设置同一时间能够接收的请求数量

server.listen(628)

4)让服务器保持一致运行的状态

while True:
    # 5)接收请求(接电话)
    # 注意: 当程序执行到accept()的时候, 会停下来直到有客户端给当前服务器发送请求位置

    connect, address = server.accept()
    # print(connect, address)
    # 6)接收客户端发送的数据(听电话)
    """
    recv(数据大小)  - 接收数据并且设置一次性能够接收的最大数据
    
    补充: 二进制转字符串
    二进制对象.decode(encoding='utf-8')
    str(二进制对象, encoding='utf-8')
    """
    while True:
        recv_data = connect.recv(1024)
        # print('接收:', recv_data.decode(encoding='utf-8'))
        print(str(recv_data, encoding='utf-8'))
    
        # 7)给客户端发送数据(说点话)
        """
        send(数据)    发送数据, 数据的类型必须是bytes
        HTTP/1.1 200 OK\r\n\r\n 
        """
        message = input('服务器输入:')
        connect.send(message.encode())
    
    # 8)关闭连接(挂电话)
    # connect.close()

二.套接字Client

1.创建套接字对象(买电话机)

client = socket()

2.发送请求(打电话)

connect(ip地址, 端口号)

client.connect(('10.7.181.115', 6628))
while True:
    # 3.发送消息
    message = input('客户端输入:')
    client.send(message.encode())

    # 4.接收消息
    re_data = client.recv(1024)
    print(re_data.decode(encoding='utf-8'))

# client.close()

你可能感兴趣的:(Day18 网络编程)