def start(self): ''' 启动服务器 :return: ''' try: self.sock.bind((get.get_ip(), self.port)) except Exception as e: print(e) self.sock.listen(5) print("服务器已开启,当前ip为:{},所占用端口为:{}".format(get.get_ip(), self.port)) print("可以随时在空白处输入stop sever并回车,来关闭服务器") # 此处不用线程启动方法的话会卡在该方法的死循环中,无法关闭服务器 threading.Thread(target=self.accept_member, args=()).start()
def start_sever(s): server_addr = (get.get_ip(),10000) s.bind(server_addr) s.listen(10) print("sever is opening...") print("if you want to close the sever,please input: stop server") threading.Thread(target=accept_connection,args=(s,)).start()
def __init__(self): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.addr = (get.get_ip(), 10000) self.users = {} self.res = [] self.address = [] self.tmp = [] self.i = 0
def connect(self): try: # addr = (self.ip,self.port) addr = (get.get_ip(), self.port) # 只有自己一台电脑做测试时,可以直接用左边的 self.sock.connect(addr) threads = [ threading.Thread(target=self.Receive), threading.Thread(target=self.Send) ] for t in threads: t.start() except Exception as e: print(e)
import socket import threading import os import get # 这个包是自己写的 addr = (get.get_ip(), 10000) s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(addr) s.listen(5) print("正在等待连接....\n") sever, addr_s = s.accept() def recv_msg(): print("连接成功!现在可以接收消息!\n") while True: # 这里发现另一端在send_msg中关闭套接字后会报错。。。于是用try捕获报错信息并正常退出 try: response = sever.recv(1024) recv_time = get.get_time() print("{} 接收到信息:{}".format(recv_time, response.decode("gbk"))) except ConnectionResetError: print("对方已经退出聊天") s.close() break os._exit(0) def send_msg(): print("连接成功!现在可以发送消息!\n") print("输入消息按回车来发送") print("输入esc来退出聊天")
# file:Client.py # author:74049 # datetime:2021/5/18 21:10 # software: PyCharm ''' this is functiondescription ''' # import module your need import socket import threading import os import get s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # addr = # 服务器端的IP和端口 addr = (get.get_ip(), 10000) #只有自己一台电脑做测试时,可以直接用左边的 s.connect(addr) def recv_msg(): # print("连接成功!现在可以接收消息!\n") while True: try: # 测试发现,当服务器率先关闭时,这边也会报ConnectionResetError response = s.recv(1024) print(response.decode("gbk")) except ConnectionResetError: print("服务器关闭,聊天已结束!") s.close() break os._exit(0)
def __init__(self): self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.addr = (get.get_ip(), 10000) self.users = {}
break except Exception as ret: print(str(addr) + " 连接异常,准备断开: " + str(ret)) finally: try: # 客户端断开后执行的操作 new_socket.close() online_socket.remove(new_socket) offline_notice(new_socket) socket2user.pop(new_socket) time.sleep(4) update_online_list() except Exception as ret: print(str(addr) + "连接关闭异常") # 入口 if __name__ == "__main__": try: main_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_addr = (get.get_ip(), 10000) main_socket.bind(server_addr) #main_socket.bind(('127.0.0.1', 7890)) # ??????ip?port main_socket.listen(128) # ????? print("服务器启动成功,开始监听...") while True: new_socket, addr = main_socket.accept() Thread(target=handle, args=(new_socket, addr)).start() except Exception as ret: print("服务器出错: " + str(ret))
def __init__(self): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.addr = (get.get_ip(), 8080) self.users = {} self.flag = False
def __init__(self): self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) self.addr = (get.get_ip(), 10000) self.users = {} self.names = {}