用户:辣椒爆炒蔡徐坤查看:40 回复:12 评论:40 创建时间:2019-10-26T16:49:27
【作品展示】

【作品介绍】
这是一个基于网络通信协议(UDP)完成的多线程版聊天室,由于结构复杂,如果网页端无法运行的话,请到海龟编辑器运行注:本作品有可能会后续加入TkinterGUI窗口,且作品为雏形,只允许两个IP相互通信。
【作品源代码】
import socket
import threading
def recv_date(s):
while True:
udp_s = s.recvfrom(1024)
print(udp_s)
def send_date(s, ip, port):
while True:
r = input("请输入要发送的数据:")
s.sendto(r.encode("gbk"), (ip, port))
def main():
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", 7890))
ip = input("请输入IP地址:")
port = int(input("请输入端口:"))
t_recv = threading.Thread(target=recv_date, args=(s,))
t_send = threading.Thread(target=send_date, args=(s, ip, port))
t_recv.start()
t_send.start()
if __name__ == "__main__":
main()
【提示】
部分含有Python第三方库相关内容的作品,在海龟编辑器网页端无法运行哦!如遇到这种情况,可以打开下面的链接,下载海龟编辑器客户端:
https://python.codemao.cn
QBZ_# 机器人
def car_bot(in_msg):
import random
car_dict = {"奔驰":"真有钱","宝马":"牛!"}
if in_msg in cake_dict.keys():
return cake_dict[in_msg]
else:
reply = ['你说什么?',
'你说得对!'
'是不是你哪里写错了?',
'好吧!',
'我叫小i,你呢?']
return random.choice(reply)
import socket
print('This is sever_bot.')
local_addr= ('localhost', 20000) # 本地主机接受端口
# 创建socket对象,DGRAM方式,专门用于发送
ss= socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# socket对象绑定地址及端口
ss.bind(local_addr)
while 1:
# 通过socket接收消息和地址
reciveData, rec_addr = ss.recvfrom(1024)
if reieveData:
print("from:", rec_addr)
# 通过socket向远程主机发消息
echo = car_bot(reciveData.decode())
ss.sendto(sendData.encode("utf-8"), remote_addr)
ss.close()点赞0
评论
QBZ_#!/usr/bin/env python3
import socket
print('小i: 你好,我是小i,有什么可以帮您?')
local_addr = ('localhost',10000) # 本地主机发送端口
# 目标主机接受端口
remote_addr = ('喵)
# 创建socket对象,DGRAM方式,专门用于发送
ss = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
# socket对象绑定地址及端口
ss.bind(local_addr)
while 1:
sendData = input("发送:")
if sendData == "quit":
break
# 通过socket向远程主机发消息
ss.sendto(sendData.encode("utf-8"),remote_addr)
reciveData,rec_addr = ss.recvfrom(1024)
if reieveData:
print("小i@",rec_addr)
ss.close()点赞0
评论
def car_bot(in_msg):
import random
car_dict = {"奔驰": "真有钱", "宝马": "牛!"}
if in_msg in car_dict.keys():
return car_dict[in_msg]
else:
reply = ['你说什么?',
'你说得对!'
'是不是你哪里写错了?',
'好吧!',
'我叫小i,你呢?']
return random.choice(reply)
import socket
print('This is sever_bot.')
local_addr = ('localhost', 20000) # 本地主机接受端口
# 创建socket对象,DGRAM方式,专门用于发送
ss = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# socket对象绑定地址及端口
ss.bind(local_addr)
while 1:
# 通过socket接收消息和地址
in_msg, rec_addr = ss.recvfrom(1024)
if in_msg:
print("from:", rec_addr)
# 通过socket向远程主机发消息
echo = car_bot(in_msg.decode())
ss.sendto("hahahhahahah".encode("utf-8"),("192.168.232.1",20000))
ss.close()
点赞0
评论
#服务器
import socket
import random
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(("", 7890))
reply = ['11',
'22'
'33',
'OK',
'Are you?']
reply_randoms = random.choice(reply)
print("This is a server")
while 1:
text,ip = s.recvfrom(1024)
if text:
print("from:",ip)
s.sendto(reply_randoms.encode("gbk"),("192.168.232.1",8080))
s.close()点赞0
评论
#客户端
import socket
print('小i: 你好,我是小i,有什么可以帮您?')
ss = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
ss.bind(("",8080))
while 1:
sendData = input("发送:")
if sendData == "quit":
break
else:
ss.sendto(sendData.encode("gbk"),("192.168.232.1",7890))
se,sa = ss.recvfrom(1024)
print(se,sa)点赞0
评论