應用程式兩端通過「套接字」向網路發出請求或者應答網路請求。可以把socket理解為通訊的把手(hand),是乙個介面,封裝了大量方法
socket起源於unix,在unix一切皆檔案哲學的思想下,socket是一種"開啟—讀/寫—關閉"模式的實現,伺服器和客戶端各自維護乙個"檔案",在建立連線開啟後,可以向自己檔案寫入內容供對方讀取或者讀取對方內容,通訊結束時關閉檔案。socket的英文原義是「插槽」或「插座」,就像我們家裡座機一樣,如果沒有網線的那個插口,**是無法通訊的。socket是實現tcp,udp協議的介面,便於使用tcp,udp。
注意:socket不能傳送為空的字元[直接回車]
伺服器端:
# 服務端客戶端:import socket
# family=af_inet, 代表使用ipv4的ip協議
# type=sock_stream 代表使用tcp協議進行連線
server = socket.socket() # 建立socket
ip_addr = ('127.0.0.1', 9999) # 1024之前的埠,預設是os使用
server.bind(ip_addr) # 要求必須是乙個元組
server.listen(3) # 開始監聽傳入連線。在拒絕連線之前,可以掛起的最大連線數量。
while true:
conn, addr = server.accept() # 接受連線並返回(conn,address)
# 其中conn是新的套接字物件[客戶端],可以用來接收和傳送資料。
# address是連線客戶端的位址。
exit_flag = true
while exit_flag:
print('當前連線物件', addr)
# 傳送一定要有接收
try:
data = conn.recv(1024)
print('伺服器:', str(data, 'utf-8'))
inp = input('>>>:')
if inp != 'bye':
conn.send(bytes(inp, 'utf-8'))
exit_flag = true
else:
conn.send(bytes(inp, 'utf-8'))
exit_flag = false
except exception as e:
print('已關閉當前連線物件', addr, '等待連線...')
exit_flag = false
finally:
conn.close()
server.close()
# 客戶端server:import socket
# family=af_inet, 代表使用ipv4的ip協議
# type=sock_stream 代表使用tcp協議進行連線
client = socket.socket()
ip_addr = ('127.0.0.1', 9999)
try:
client.connect(ip_addr)
exit_flag = true
while exit_flag:
# 傳送一定要有接收
inp = input('>>>:')
if inp != 'bye':
client.send(bytes(inp, 'utf-8'))
exit_flag = true
else:
client.send(bytes(inp, 'utf-8'))
exit_flag = false
info = client.recv(1024) # 最大接收1024k資料,# 傳送/接收的資料一定是byte型別
print('客戶端:', str(info, 'utf-8'))
except exception as e:
print('客戶端關閉連線', e)
finally:
client.close()
import socketclient:import select
sk=socket.socket()
sk.bind(("127.0.0.1",8801))
sk.listen(5)
inputs=[sk,]
while true:
r,w,e=select.select(inputs,,,5)
print(len(r))
for obj in r:
if obj==sk:
conn,add=obj.accept()
print(conn)
else:
data_byte=obj.recv(1024)
print(str(data_byte,'utf8'))
inp=input('回答%s號客戶》'%inputs.index(obj))
obj.sendall(bytes(inp,'utf8'))
print('>>',r)
import socketsk=socket.socket()
sk.connect(('127.0.0.1',8801))
while true:
inp=input(">>>>")
sk.sendall(bytes(inp,"utf8"))
data=sk.recv(1024)
print(str(data,'utf8'))
android學習筆記 Socket編
android學習筆記 socket程式設計 inonoclas 十三 socket程式設計 socket基本通訊模型 使用基於tcp協議的socket 使用基於udp協議的socket socket套接字 用於描述ip位址和埠是乙個通訊鏈的控制代碼 以你公用程式通過 套接字 向網路發出請求或者應答...
silverlight中的socket程式設計注意事項
1.粘包 目前sl中的socket只能用tcp ip協議,而tcp ip本質是乙個 流 協議,也就是說資料無邊界,傳送的就是一連串的位元組 沒有資料報的概念 因此連續傳送時有所謂的 粘包 現象,詳細解釋如下 比如你設定傳送緩衝區的大小是512位元組,如果 在相隔時間極短的情況下 連續傳送次資料,第一...
python學習之dedecms exp編寫
針對織夢5.7 sp1遠端檔案包含getshell exp編寫,漏洞分析請檢視網上分析,不再贅述。exp coding utf 8 import requests import time def dada url url index url install index.php khtml,like ...