作業(yè):
- 客戶端和服務(wù)器聊天脉幢,可以一直聊天,直到一方發(fā)送’拜拜’嗦锐。然后就可以和下一個(gè)人一直聊
服務(wù)器:
import socket
server = socket.socket()
server.bind(('10.7.187.55', 8888))
server.listen(100)
print('開始監(jiān)聽嫌松。')
while 1:
conversation, address = server.accept()
while 1:
get_data = conversation.recv(1024)
print('客戶端:', get_data.decode('utf-8'))
if get_data.decode('utf-8') == '拜拜':
print('客戶端已退出連接,等待下次客戶端請求:', address)
break
send_data = input('服務(wù)器:')
conversation.send(send_data.encode('utf-8'))
if send_data == '拜拜':
print('已斷開本次連接奕污,等待下次客戶端請求:')
break
客戶端:
import socket
client = socket.socket()
client.connect(('10.7.187.55', 8888))
while 1:
send_data = input('客戶端:')
client.send(send_data.encode('utf-8'))
if send_data == '拜拜':
print('已斷開本次連接萎羔。')
break
get_data = client.recv(1024)
print('服務(wù)器:', get_data.decode('utf-8'))
if get_data.decode('utf-8') == '拜拜':
print('服務(wù)器已斷開本次連接。')
break
2.客戶端給服務(wù)器發(fā)送請求碳默,請求成功后贾陷,客戶端給服務(wù)發(fā)送‘1’,服務(wù)器就給客戶端發(fā)送一張圖片嘱根;客戶端給服務(wù)發(fā)送‘2’髓废,服務(wù)器就給客戶端返回一個(gè)json文件中的內(nèi)容;客戶端給服務(wù)發(fā)送‘3’, 服務(wù)器返回’拜拜’,然后斷開連接
服務(wù)器:
import socket
import json
server = socket.socket()
server.bind(('10.7.187.55', 8888))
server.listen(200)
print('開始監(jiān)聽:')
while 1:
conversation, adress = server.accept()
while 1:
get_data = conversation.recv(1024)
print('客戶端:', get_data.decode('utf-8'))
if get_data.decode('utf-8') == '3':
send_data = '拜拜!'
conversation.send(send_data.encode('utf-8'))
print('當(dāng)前客戶端已斷開連接该抒。', adress)
break
elif get_data.decode('utf-8') == '1':
with open('王也.jpg', 'rb') as f:
send_data = f.read()
conversation.send(send_data)
print('已發(fā)送圖片瓦哎。')
elif get_data.decode('utf-8') == '2':
with open('files/測試文件.json', 'r', encoding='utf-8') as f:
content = json.load(f)
conversation.send(str(content).encode('utf-8'))
print('已發(fā)送文件。')
客戶端:
import socket
client = socket.socket()
client.connect(('10.7.187.55', 8888))
while 1:
send_data = input('客戶端:')
client.send(send_data.encode('utf-8'))
if send_data == '3':
print('已退出連接柔逼。')
break
elif send_data == '1':
content = bytes()
while 1:
get_data = client.recv(1024)
content += get_data
print(len(get_data))
# if len(get_data) == 39:
if len(get_data) < 1024:
break
with open('接收文件/圖片1.jpg', 'bw') as f:
f.write(content)
print('接收圖片成功蒋譬。')
elif send_data == '2':
get_data = client.recv(1024)
print('服務(wù)器:', get_data.decode())