套接字对话
2018-08-07 本文已影响0人
KingJX
写一个两个人的聊天系统,可以实现双向聊天功能。
如果发送的是普通的文字就直接打印,如果发送的文字是’拜拜’就关闭连接,
如果是一个网络地址就获取数据,如果是图片地址就下载图片到本地
-
服务器:
import socket
import re
from requests import request
if __name__ == '__main__':
server = socket.socket()
server.bind(('192.168.1.102', 8088))
server.listen(5)
while True:
conversation, addr = server.accept()
# 发送消息
while True:
message = input('>>>')
conversation.send(message.encode())
# 接收消息
message_data = conversation.recv(1024)
url1 = message_data.decode(encoding='utf-8')
url = re.split(r'\s', url1)
if re.fullmatch(r'http.+', url[0]):
if re.fullmatch(r'.+\.jpg|.+\.png|.+\.gif|.+\.jpeg', url[0]):
response = request('GET', url[0])
str1 = re.findall(r'.*(.{8})', url[0])
content = response.content
with open(str1[0], 'wb') as f:
f.write(content)
else:
# url = re.split(r'\s', url1)
response = request('GET', url[0])
text = response.text
print(text)
else:
print(url1)
# conversation.close()
-
客户端
import socket
if __name__ == '__main__':
client = socket.socket()
client.connect(('192.168.1.102', 8088))
while True:
data = client.recv(1024)
print(data.decode(encoding = 'utf-8'))
str1 = input('>>>')
client.send(str1.encode(encoding='utf-8'))
网络编程.gif
获取网络上的图片.png