python 網路程式設計 02

2022-04-10 12:59:38 字數 1677 閱讀 6784

[1] server端

首先我們看下乙個最簡單http服務端

sock = socket.socket(socket.af_inet,socket.sock_stream)#建立socket物件

sock.bind(('localhost',8000))#監聽

sock.listen(5)

while true:

connection ,clent_addr = sock.accept()

handle_request(connection)

if __name__ == '__main__':

main()

當我們監聽埠之後 我們執行sock.accept() 這行**的時候,**會堵塞等待客戶端請求 也就是如果使用者不訪問這個埠,就不執行下面的**

那麼 connection ,clent_addr 分別代表就是接收到客戶端物件和客戶端ip位址

然後在**中我們呼叫客戶端socket的recv方法設定了快取區大小。並且通過send函式

傳送了內容。本質上http協議是tcp的上層協議,又由於http的特性

只要send中有字串資訊,瀏覽器就能顯示。當然你也可以整個網頁的內容都返回,那麼顯示就是整個網頁了。我們通過答應buf就能獲得客戶端的請求頭部的,

當然我們這裡不討論http協議。

那麼說白了 客戶端跟服務端的的關係就是傳送和接收資料的關係

[2]clent端 

server **

import socket

def handle_request(client):

buf = client.recv(1024)

client.send('hi')

client.close()

def main():

sock = socket.socket(socket.af_inet,socket.sock_stream)

sock.bind(('localhost',8000))

sock.listen(5)

while true:

connection ,clent_addr = sock.accept()

print connection,clent_addr

handle_request(connection)

if __name__ == '__main__':

main()

client **

import  socket

sock = socket.socket()

sock.connect(('localhost',8000))

data= raw_input('input:')

sock.send(data)

res = sock.recv(1024)

print res

sock.close()

python網路程式設計02

tcp1.tcp通訊,實現tcp的套接字客戶端 import socket def main 1.建立tcp的套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2.鏈結伺服器 server ip input 請輸入要鏈結的伺...

python 網路程式設計 02 粘包

思考 什麼是粘包?同時執行多條命令之後,得到的結果很可能只有一部分,在執行其他命令的時候又接收到之前執行的另外一部分結果,這種顯現就是粘包。例如 send b 123 send b abc recv 4 1234 應該接收123 recv 4 bc 應該接收abc或者傳送的資料量大,一次沒有接收完,...

網路程式設計02 併發理論

import socket s socket.socket 建立網路傳輸,預設tcp協議 s.bind ip port 繫結ip 埠 s.listen 5 半連線池 sock,addr s.accept 監聽,三次握手的lisent態 sock.recv 1024 接收內容 sock.send 傳送...