網路應用程式在執行時,會牽渉到兩端點的應用程式執行。
請在不同的電腦中,使用python3測試下方的網路應用程式碼:
一端執行為接收端,需選定通訊埠號1024-65535
一端執行為傳送端,需給定連接位址及埠號。
在該程式中新增一功能,必須新增程式碼,而不是單純修改原程式及示範程式碼。
報告說明下列四點,並附上新增程式碼及執行結果擷圖(按下Alt+PrtSc):
1. 接收程式的運作,2. 傳送程式的運作,3. 新增程式碼介紹,4. 心得。
查詢IP位址設定指令:ifconfig或ipconfig。
ChatGPT參考設定:
下面這個網路應用程式在做些什麼事
import socket
#set port number
port = xxx
s = socket.socket()
s.bind(('', port))
s.listen()
conn, addr = s.accept()
while True:
received = conn.recv(1024).decode()
print(addr, received)
if received == 'exit': break
import socket
#set connecting ip address and port number
addr = 'xx.xx.xx.xx'
port = xx
s = socket.socket()
s.connect((addr, port))
while True:
send_msg = input()
s.send(send_msg.encode('utf-8'))
if send_msg == 'exit': break
接收程式的運作:其實我就是改變社會風氣,風靡萬千少女,刺激電影市場,提高年輕人內涵,玉樹臨風,風度翩翩的整人專家,我名叫古晶,英文名叫Jing Koo!--整人專家
傳送程式的運作:他高傲,但是宅心仁厚,他低調,但是受萬人景仰,他可以把神賜給人類的火,運用得出神入化,燒出堪稱火之藝術的超級菜式,他究竟是神仙的化身?還是地獄的使者?沒人知道,但是可以肯定,每個人都給他一個稱號——食~~神!
新增程式碼介紹:s = socket.socket()哎!不許教!本夫子原籍三水,現為華府首籍西賓,手執白紙扇!你哪個單位的?
心得:我左青龍,右白虎,老牛在腰間,龍頭在胸口,人擋殺人,佛擋殺佛!
附上程式執行擷圖
髒話消音
import sys
import socket
import threading
#TODO:end connection with 'exit'
def connect(conn):
while True:
received = conn.recv(1024).decode()
if received != '': print("msg: "+received)
if received == "exit": break
def sendMsg(conn):
while True:
send_msg = input()
if send_msg != '': conn.sendall(send_msg.encode('utf-8'))
if send_msg == "exit": break
if __name__ == '__main__':
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
if len(sys.argv) == 3:
s.connect((sys.argv[1], int(sys.argv[2])))
thread1 = threading.Thread(target = connect, args = ([s]))
thread2 = threading.Thread(target = sendMsg, args = ([s]))
elif len(sys.argv) == 2:
s.bind(('', int(sys.argv[1])))
s.listen()
(conn, addr) = s.accept()
thread1 = threading.Thread(target = connect, args = ([conn]))
thread2 = threading.Thread(target = sendMsg, args = ([conn]))
else:
print("usage for server: %s [port] " % sys.argv[0] )
print("usage for client: %s [ip adress][port] " % sys.argv[0] )
sys.exit(0)
thread1.start()
thread2.start()
thread1.join()
thread2.join()
使用多緒程式設計,開發完整的傳送接收功能,開發多對多會議聊天程式。
議題融入:性別平等教育,人權教育,環境教育,家庭教育
學習表現:能使用多元的觀點思辨資訊科技相關議題。能實踐健康的數位公民生活。