网络编程之实现客户端与服务端聊天

客户端代码:

import socket
sk = socket.socket()
address = ('127.0.0.1',8008)
sk.connect(address)    #连接服务端
print('已连接')
以上代码实现与服务端的连接。连接以后下面开始交互,必须是一收一发
while True:
    inp = input('>>>')
    if inp == 'exit':   #如果输入exit,退出循环
        break
    elif inp == '':     #如果输入的内容为空,提醒用户,并让他重新输入
        print('不能输入空白字符')
        continue
    sk.send(bytes(inp,'utf8'))     #发送信息
    data = sk.recv(1024)         #接收信息
    print(str(data,'utf8'))
sk.close      #关闭客户端连接

服务端代码:

import socket
sk = socket.socket()   #给socket创建对象
address = ('127.0.0.1',8008)  #设置服务端的IP地址和端口号
sk.bind(address)    #绑定地址
sk.listen(3)    #设置客户端请求连接的排队数量(每次只能连接一个客户端)
注意:1.下面需要客户端连接,连接之前将在此阻塞
2.conn接收客户端对象,addr接收客户端IP地址和端口号
3.连接成功后,开始信息交互
 1 while True:
 2     print('waiting for connection..........')
 3     conn, addr = sk.accept()  # 在此接受客户端连接
 4     while True:
 5         try:
 6             data = str(conn.recv(1024),'utf8')      #接收客户端信息
 7             if  data != '':
 8                 print(data)
 9             else:        #如果接收到空内容,等待用户输入并重新接收
10                 continue
11         except Exception as e:
12             print(e)
13             break
14         while True:
15             inp = input('>>>')
16             if inp == '':
17                 print('不能发送空白字符')
18                 continue
19             conn.send(bytes(inp,'utf8'))   #收发的内容必须是bytes类型
20             break
21 sk.close()
在此加一个异常处理:当客户端强制关闭连接时报出异常,并等待下一个客户端连接
Linux下无需加异常处理,因为它会将强制关闭连接当做收到空值处理
 
 

猜你喜欢

转载自www.cnblogs.com/Finance-IT-gao/p/10584792.html