예제 #1
0
    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()
예제 #2
0
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()
예제 #3
0
 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
예제 #4
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来退出聊天")
예제 #6
0
# 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)
예제 #7
0
 def __init__(self):
     self.socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
     self.addr = (get.get_ip(), 10000)
     self.users = {}
예제 #8
0
                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))
예제 #9
0
 def __init__(self):
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.addr = (get.get_ip(), 8080)
     self.users = {}
     self.flag = False
예제 #10
0
 def __init__(self):
     self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
     self.addr = (get.get_ip(), 10000)
     self.users = {}
     self.names = {}