[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 socketdef 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 socketsock = 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 傳送...