• 大小: 4KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-13
  • 语言: Python
  • 标签: python  socket  

资源简介

利用socket套接字函数来实现一个聊天系统: 1.新用户注册 2.用户登录和退出 3.聊天服务 4.在线用户查询 5.文件传输服务

资源截图

代码片段和文件信息

import socket
import argparse
import re
import time
import os
import sys
import threading
import getpass
import hashlib

User = None

def get_md5_value(s):

    my_md5 = hashlib.md5()
    my_md5.update(s.encode(‘utf-8‘))
    md5_value = my_md5.hexdigest()

    return md5_value

def register(sock):
    while True:
        while True:
            UserName = input (‘Please input your username(4-16 numbers or letters):\n‘)
            if len(UserName) < 4:
                print(‘Your name is too short!‘)
                continue
            elif len(UserName) > 16:
                print(‘Your name is too long!‘)
                continue
            elif re.match(r‘[a-zA-Z0-9]{416}$‘UserName) == None:
                print(‘Username is illegal!‘)
                continue
            else:
                break
        while True:
            PassWord = input (‘Please input your password(8-24 numbers or letters)\n‘)
            if len(PassWord) < 8:
                print(‘Your password is too short!‘)
                continue
            elif len(PassWord) > 24:
                print(‘Your password is too long!‘)
                continue
            elif re.match(r‘[a-zA-Z0-9]{824}$‘PassWord) == None:
                print(‘Password is illegal!‘) 
                continue
            else:
                PassWord1 = input(‘Input your password again:\n‘)
                if PassWord1 != PassWord:
                    continue
                else:
                    break
        PassWord = get_md5_value(PassWord)
        message = bytes(UserNameencoding = ‘utf-8‘) + b‘‘ + bytes(PassWordencoding = ‘utf-8‘)
        sock.sendall(message)
        serverback = sock.recv(1024).decode(‘utf-8‘)
        if serverback == ‘0‘:
            print(‘Username already exists‘)
            continue
        else:
            print(‘Register successfully!‘)
            time.sleep(1)
            os.system(‘cls‘)
            break


def log_in(sock):

    global User
    while True:
        UserName = input (‘Please input your username:\n‘)
        PassWord = getpass.getpass(‘Please input your password:\n‘)
        PassWord = get_md5_value(PassWord)
        message = bytes(UserNameencoding = ‘utf-8‘) + b‘‘ + bytes(PassWordencoding = ‘utf-8‘)
        User = UserName
        sock.sendall(message)
        serverback = sock.recv(1024).decode(‘utf-8‘)
        if serverback == ‘0‘:
            print(‘Incorrect username or passwordplease re-enter!‘)
            continue
        else:
            print(‘Log in successfully!‘)
            time.sleep(1)
            os.system(‘cls‘)
            break
    if not os.path.exists(‘e:\\file_received\\‘+UserName):
        os.makedirs(‘e:\\file_received\\‘+UserName)

def log_out(sock):
    serverback = sock.recv(1024).decode(‘utf-8‘)
    if serverback == ‘1‘:
        print(‘Log out successfully!‘)
    else:
        print(‘Log out error!‘)

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        8321  2018-12-05 00:27  server.py
     文件        9028  2018-11-30 14:16  client.py

评论

共有 条评论