网络编程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