1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
import socket import sys, threading
def receive_message(): while True: try: print(s.recv(1024).decode('utf-8')) except: break
def send_message(): while True: try: message = input() s.sendto((name + ':' + message).encode('utf-8'), server_socket) if message == "exit": break except KeyboardInterrupt: s.sendto((name + ':' + "exit").encode('utf-8'), server_socket) break except socket.herror:
break
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
server_ip = input("请输入服务器的ip:") server_port = int(input("请输入服务器绑定的端口号:")) server_socket = (server_ip, server_port)
print('''----- 欢迎来到聊天室,退出聊天室请输入 "exit" -----''')
name = input("输入你的昵称:")
s.sendto(name.encode('utf-8'), server_socket) receive = s.recv(1024).decode('utf-8')
while receive == "NO": name = input("该昵称已被使用,请重新输入:") s.sendto(name.encode('utf-8'), server_socket) receive = s.recv(1024).decode('utf-8')
print('''--------------- %s ---------------''' % name)
thread_receive = threading.Thread(target=receive_message, name = "thread_receive") thread_send = threading.Thread(target=send_message, name="thread_send") thread_receive.start() thread_send.start() thread_send.join()
s.close() print("--------------- 连接关闭 ---------------")
|