一 網路基礎
網際網路協議按照功能不同分為osi七層或者ip/tcp五層,ip/tcp四層。
資料鏈路層:有個乙太網協議,ethernet,一組電訊號稱為乙個資料報,也叫幀。ethernet規定接入internet的計算機都必須有網絡卡,傳送端和接收端的位址就是網絡卡位址,也就是mac位址。
傳輸層:tcp/udp協議。
二 socket
socket本質是程式設計介面(api),對tcp/ip的封裝,tcp/ip也要提供可供程式設計師做網路開發所用的介面,這就是socket程式設計介面。
實際上socket是對tcp/ip協議的封裝,socket本身並不是協議,而是乙個呼叫介面(api)。
1 套接字的兩個種族
1 af_unix,基於檔案型別。很少用
2 af_inet,基於網路型別。 af,代表 address family,位址族。
server端
importclient端socket
server=socket.socket(socket.af_inet,socket.sock_stream)
server.bind((
'127.0.0.1
',8080)) #繫結
server.listen(5) #監聽
while
true: #連線迴圈
conn,ip_port=server.accept() #建立client與server端的連線
print('
conn
',conn)
print('
ip_port
',ip_port)
while
true: #通訊迴圈
try: #異常處理,client端突然斷開
date=conn.recv(1024) #接收
if not date:break #這行**是針對linux,在linu中如果client突然斷開,conn.recv由阻塞狀態變為不阻塞狀態,一直接收 空。
(date)
conn.send(date.upper()) #傳送
except
exception:
break
conn.close()
server.close()
importsocket
client=socket.socket(socket.af_inet,socket.sock_stream)
client.connect((
'127.0.0.1
',8080))
while
true: #通訊迴圈
cmd=input('
==>')
ifnot cmd:continue #判定不能為空,為空,實際上client端沒有被作業系統發出資料,空 作業系統就不會發出。
client.send(bytes(cmd,encoding='
utf-8'))
date=client.recv(1024)
print(date.decode('
utf-8
'))
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...