雖說語言變成了python,但是socket的基本框架還是在的。首先,我們還是要看一下unix環境下的tcp框架
接著直接來看程式,開啟你的idle,我們先來看server端:
import socket # 匯入socket庫
import time # 匯入time庫
host = 'localhost' # 連線本地伺服器
port = 8001 # 設定埠號
sock = socket.socket(socket.af_inet, socket.sock_stream) # 選擇ipv4位址以及tcp協議
sock.bind((host, port)) # 繫結埠
sock.listen(5) # 監聽這個埠,可連線最多5個裝置
while true:
connection, address = sock.accept() # 接受客戶端的連線請求
try:
connection.settimeout(10) # 設定10s時限
buf = connection.recv(1024) # 接收資料例項化
if buf: # 接收成功
print('connection success!')
connection.send(b'welcome to server!') # 傳送訊息,b為bytes型別
else: # 接收失敗
connection.send(b'please go out!')
except socket.timeout: # 超時
print ('time out')
connection.close() # 關閉連線
再看client端,比server端更簡單:
import socket
import time
host = 'localhost'
port = 8001
sock = socket.socket(socket.af_inet, socket.sock_stream)
sock.connect((host, port))
time.sleep(2)
sock.send(b'1') # 傳送資訊
print (sock.recv(1024).decode()) # 列印接收訊息,並且解碼
sock.close() #關閉連線
然後我們先執行server端,讓其處於等待接收的狀態
接著執行client端,我們分別來看兩個idle視窗的執行結果
既然複雜的tcp我們都可以寫了,那udp就更不在話下了。
我們只要在原來的**上進行修改就行:
server端:
import socket
host = 'localhost'
port = 8001
sock = socket.socket(socket.af_inet, socket.sock_dgram)
sock.bind((host, port))
while true:
buf, address = sock.recvfrom(1024)
if buf:
print('connection success!')
sock.sendto(b'welcome to server!',address)
else:
sock.sendto(b'please go out!',address)
sock.close()
client端:
import socket
import time
host = 'localhost'
port = 8001
sock = socket.socket(socket.af_inet, socket.sock_dgram)
sock.connect((host, port))
time.sleep(2)
sock.send(b'1')
print (sock.recv(1024).decode())
sock.close()
c語言的socket程式設計版本請看我之前的部落格。 silverlight中的socket程式設計注意事項
1.粘包 目前sl中的socket只能用tcp ip協議,而tcp ip本質是乙個 流 協議,也就是說資料無邊界,傳送的就是一連串的位元組 沒有資料報的概念 因此連續傳送時有所謂的 粘包 現象,詳細解釋如下 比如你設定傳送緩衝區的大小是512位元組,如果 在相隔時間極短的情況下 連續傳送次資料,第一...
linux下的shell 和python編寫
第一句即指定指令碼直譯器 bin bash usr bin env python3或 which python3的哪個 usr bin python3 執行兩種方法 第一種編寫完 直接bash s.sh python3 s.py 第二種賦加x chmod a x s.sh chmod 777 s.p...
android學習筆記 Socket編
android學習筆記 socket程式設計 inonoclas 十三 socket程式設計 socket基本通訊模型 使用基於tcp協議的socket 使用基於udp協議的socket socket套接字 用於描述ip位址和埠是乙個通訊鏈的控制代碼 以你公用程式通過 套接字 向網路發出請求或者應答...