利用socket建立一个简单的聊天client端和server端, 通过这个实例,可以加强学习了解socket的工作机制。

效果如下图:


server端代码如下:

#!/user/bin/env python
#-*- coding:utf-8 -*-

import socket

#待bind的ip/port
ip_port = ('127.0.0.1', 9999)
#建立socket
s = socket.socket()
#绑定ip/port
s.bind(ip_port)
#监听连接
s.listen()
print('等待用户连接中... ...')
while(True):
    #建立连接后,将accept()返回的元组赋值给conn, addr
    conn, addr = s.accept()
    if conn is not None:
        print('有一个用户已连接.\n等待对方发送信息.')
    while(True):
        try:
            recv_data = conn.recv(1024)
            #显示接收的信息
            print('对方发送的信息:', str(recv_data, encoding = 'utf-8'))
            send_data = input('我回复>>').strip()
            conn.send(bytes(send_data, encoding = 'utf-8'))
            print('等待对方发送信息>>')
        except Exception:
            print('远程主机强迫关闭了一个现有的连接,续继等待其它的连接。')
            break
    conn.close()

客户端代码如下:

#!/user/bin/env python
#-*- coding:utf-8 -*-

import socket

#待建立连接HOST的ip/port
ip_port = ('127.0.0.1', 9999)
#建立socket
s = socket.socket()
#建立连接
s.connect(ip_port)
while(True):
    #待发送的信息
    send_data = input('给对方发送信息:').strip()
    s.send(bytes(send_data, encoding = 'utf-8'))
    print('等待对方回复:')
    #接收信息并显示
    recv_data = s.recv(1024)
    print('你有新的消息:', str(recv_data, encoding = 'utf-8'))
s.close()

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐