python下的socket程式設計

2021-08-19 04:09:27 字數 2688 閱讀 2502

雖說語言變成了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位址和埠是乙個通訊鏈的控制代碼 以你公用程式通過 套接字 向網路發出請求或者應答...