网络编程socket

聊天示例

# client.py
import socket
ip_port = ('127.0.0.1', 8888)
sock = socket.socket()
sock.connect(ip_port)
print('客户端启动...')

while True:
    inp = input('输入发送数据 >>: ').strip()
    sock.sendall(bytes(inp, 'utf-8'))
    if inp == 'exit':
        break
    server_response = sock.recv(1024)
    print('服务端响应数据: %s' % str(server_response, 'utf-8'))
sock.close()
# server.py
from socket import *
ip_port = ('127.0.0.1', 8888)

# 必不可少三步:创建socket, 绑定ip_port, 最大排队数
tcp_socket_server = socket()
tcp_socket_server.bind(ip_port)
tcp_socket_server.listen(5)
print('服务端启动...')

while True:
    # 服务器如果没有此while循环,相当于建立一次连接conn,之后就关闭了conn.close()
    # conn 全双工,可收可发; address
    conn, addr = tcp_socket_server.accept()

    while True:
        # 此while循环实现持续聊天
        client_data = conn.recv(1024)
        if client_data.decode('utf-8') == 'exit':
            print('客户端断开连接,等待新用户连接....')
            break
        print('客户端%s发送来的数据: %s' % (addr, str(client_data, 'utf-8')))

        response = input('返回响应数据>: ').strip()
        conn.sendall(bytes(response, 'utf-8'))

    conn.close()
    

# 只有conn退出,第二个连接才能正常建立连接,单线程聊天,不支持并发

Last updated