2023年10月1日 星期日

用Python實作TCP傳送和接收程式

伺服端程式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

PORT = 1060
network = '192.168.176.1'
message = '國立虎尾科技大學電機資訊學院歡迎您'

s.bind((network, PORT))
print('聆聽訊息來自 ', s.getsockname()) s.listen(5) conn, address = s.accept() print('TCP Server is connected by ' + str(address)) data = conn.recv(65535) print('TCP Server 接收訊息從 {}:\n{}'.format(address, data.decode('utf-8'))) conn.send(message.encode('utf-8')) s.close()

客戶端程式:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

PORT = 1060
network = '192.168.176.1'
message = '國立虎尾科技大學電機資訊學院有電機、光電、資訊、電子等系所'

s.connect((network, PORT))
s.send(message.encode('utf-8'))
data = s.recv(65535)
print('TCP Client 接收訊息來自{}:\n{}'.format(network, data.decode('utf-8')))

測試步驟如下:
1.先開啟IDLE程式,選擇File->New File,把伺服端程式貼上,選擇Run執行,記得存檔。
2.再開啟另一個IDLE程式,選擇File->New File,把客戶端程式貼上,選擇Run執行,記得存檔。

執行結果:
1.伺服端

2.客戶端

我們可以修訂TCP伺服端,可以持續地接受客戶端的連線以及資料。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

PORT = 1060
network = '192.168.1.105'
message = '國立虎尾科技大學電機資訊學院歡迎您'

s.bind((network, PORT))
print('聆聽訊息來自 ', s.getsockname())
s.listen(5)

while(1):
    conn, address = s.accept()
    print('TCP Server is connected by ' + str(address))
    data = conn.recv(65535)
    print('TCP Server 接收訊息從 {}:\n{}'.format(address, data.decode('utf-8')))
    conn.send(message.encode('utf-8'))
s.close()



沒有留言:

張貼留言