python 網路程式設計

2022-04-05 03:12:45 字數 1907 閱讀 7405

一 網路基礎

網際網路協議按照功能不同分為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端

import

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由阻塞狀態變為不阻塞狀態,一直接收 空。

print

(date)

conn.send(date.upper()) #傳送

except

exception:

break

conn.close()

server.close()

client端

import

socket

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...