套接字(socket) 是一種通訊機制,憑藉這種機制,客戶/伺服器系統的開發工作既可以在本地單機上進行,也可以跨網路進行,linux提供的功能(列印服務,ftp等)通常時通過套接字來進行通訊的,套接字的建立和使用與管道有區別,因為套接字明確的客戶和伺服器分出來,套接字可以實現將多個客戶連線到乙個伺服器
其中最重要的協議就是 tcp,udp協議
tcp 是一種面向連線的、可靠的、基於位元組流的傳輸層協議。可靠體現在他的重發和校驗機制
udp時一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務
通訊:資訊的傳遞,分為服務端和客戶端單工通訊,通訊雙方只有一條通道,且身份不可逆。就像公司前台,他不會主動找你,他會在那等你
服務端通常會保持被動阻塞式的接收,等待客戶端前來訪問
客戶端通過ip和埠主動訪問服務端,二者後見通訊通道,實現資訊傳輸
比如對講機,一方說話,另一方只能接受不能傳送
半雙工通訊,通訊雙方只有一條通道,但通訊身份可逆
全雙工通訊,通訊雙方有多條通道,且身份可逆
ps:小範圍的丟包,不會影響通訊的質量,這叫可容忍誤位元速率
需求描述
附上**
分別是recv.py和client.py代表客戶端和服務端。執行以break結束,兩端都需要break來結束。因為要break來結束socket介面,所以在執行過程中只要出錯了,就必須關閉埠服務再開啟,來重置socket。我是重啟來解決的- -。
#client.py
**import socket
print
("i am client"
)sock = socket.socket(socket.af_inet,socket.sock_stream)
sock.connect(
("127.0.0.1"
,8000))
while
true
: recv = sock.recv(
512)
.decode(
)print
(recv)
if recv ==
"break"
:break
senddata =
input
("-->"
).encode(
) sock.send(senddata)
if senddata ==
"break"
:break
sock.close(
)**
#rece.py
import socket
print
("i am server"
)sock = socket.socket(socket.af_inet,socket.sock_stream)
sock.bind(
("127.0.0.1"
,8000))
sock.listen(5)
con,add = sock.accept(
)print
("%s:%s is connect "
%add)
while
true
: senddata =
input
("-->"
).encode(
) con.send(senddata)
#傳送需要的是位元組
if senddata ==
"break"
.encode():
break
recv = con.recv(
512)
#單次接收的大小 位元組
print
(recv.decode())
if recv ==
"break"
:break
sock.close(
)
#這是對編寫**中用到的socket方法的介紹,是基礎版的接收端。
import socket
print
("i am server"
)#建立socket物件
sock = socket.socket(socket.af_inet,socket.sock_stream)
#scoket family socket族
#af_inet ipv4
#af_inet ipv6
#af_unix linux系統間資料傳輸
#socket type
#sock_stream tcp
#sock_dgram udp
sock.bind(
("127.0.0.1"
,8000))
#雙元素元組
#元素一 ip
#元素二 埠 數字
sock.listen(5)
#監聽佇列長度
#接收con,add = sock.accept(
)#con 通訊物件,也是乙個socket物件
#add 位址,身份
print
(add)
#傳送con.send(
"hello world"
.encode())
#傳送需要的是位元組
recv = con.recv(
512)
#單次接收的大小 位元組
sock.close(
)#
python網路程式設計 TCP網路程式設計
tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...
python 網路程式設計
今天晚上學習了一下python的網路程式設計,實現了client向server傳送資料,server反饋資訊 python 3.3 版本 server from socket import class tcpserver object def init self,serverport self.se...
python網路程式設計
網路通訊是計算機之間的程序之間的通訊。tcp程式設計 tcp連線建立是雙向通道,客戶端與服務端都可以給對方傳送資料。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。建立乙個tcp的socket連線 用socket family,type 建立套接字獲得socket物件。family...