利用Python實現socket編程
1、客戶端程序需完成功能:
1)從名爲’pswd.txt’的文件中讀取密碼。
2)把密碼發送到服務器程序。
3)顯示服務器程序的返回結果
2、服務器程序需完成功能:
1)接受來自客戶端程序發送的密碼。
2)顯示客戶端的socket信息(IP地址,端口號)
3)驗證密碼是否正確(正確的密碼爲“123456”)
3)密碼正確發送”correct”,否則返回”false”
客戶端程序:
# udpclient.py
from socket import *
file = 'E:\pswd.txt'
#讀取密碼文件並保存至passwd變量
with open(file,'r') as f:
passwd = f.read()
f.close()
host = '127.0.0.1' #客戶端IP
port = 13141 #客戶端端口
bufsize = 1024 #定義緩衝大小
addr = (host,port)
udpClient = socket(AF_INET,SOCK_DGRAM) #創建客戶端
passwd = passwd.encode(encoding="utf-8") #用utf-8的格式編碼
udpClient.sendto(passwd,addr) #發送數據
response,addr = udpClient.recvfrom(bufsize) #接受數據和返回地址
response = response.decode(encoding='utf-8') #用utf-8的格式解碼
print(response,'from',addr) #顯示服務器的返回結果
udpClient.close() #關閉客戶端
服務器端程序
# udpserver.py
from socket import *
host = '' #監聽所有的IP
port = 13141
bufsize = 1024
addr = (host,port)
udpServer = socket(AF_INET,SOCK_DGRAM)
udpServer.bind(addr) #開始監聽
while True:
print('Waiting for connection...')
passwd,addr = udpServer.recvfrom(bufsize) #接受數據和返回地址
passwd=passwd.decode(encoding='utf-8')
#判斷密碼是否正確:
if passwd == '123456':
response='correct'
else:
response='false'
udpServer.sendto(response.encode(encoding='utf-8') ,addr)
print('...recevied from and return to :',addr)
udpServer.close()
結果:
服務器監聽
客戶端接收返回信息並顯示
服務器端顯示客戶端信息