資源簡介
利用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
- 上一篇:sm4國密算法python實現
- 下一篇:Python爬取b站視頻彈幕并可視化案例
評論
共有 條評論