網絡編程之實現客戶端與服務端聊天


客戶端代碼:

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下無需加異常處理,因為它會將強制關閉連接當做收到空值處理
 

 

 

注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
粤ICP备14056181号  © 2014-2020 ITdaan.com