python socket網路程式設計
阿新 • • 發佈:2018-12-15
Socket是網路程式設計的一個抽象概念。Socket表示“打開了一個網路連結”,而開啟一個Socket需要知道目標計算機的IP地址和埠號,再指定協議型別即可。
大多數連線都是可靠的TCP連線。建立TCP連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。
客戶端要主動發起TCP連線,必須知道伺服器的IP地址和埠號。建立TCP連線後,我們就可以向服務端傳送請求。
TCP連線建立的是雙向通道,雙方都可以同時給對方發資料。但是誰先發誰後發,怎麼協調,要根據具體的協議來決定。例如,HTTP協議規定客戶端必須先發請求給伺服器,伺服器收到後才發資料給客戶端。
客戶端實現:
#!usr/bin/env python # -*- coding:utf-8 -*- # Author:Ma Ping import socket client = socket.socket() #宣告socket型別並生成socket連線物件 client.connect(('0.0.0.0',9997)) #連線服務端 while True: msg = input('>>>:').strip() client.send(msg.encode('utf-8')) #傳送資料,python3只能傳送bytes型別 data = client.recv(1024).decode() #接收資料,接收最大位元組數為1024 print('client reveive: ',data) #列印接收到的資料 client.close()
服務端實現:
#!usr/bin/env python # -*- coding:utf-8 -*- # Author:Ma Ping import socket server = socket.socket() server.bind(('0.0.0.0',9997)) #繫結要監聽的埠 server.listen() #監聽 while True: # conn 為客戶端連過來,服務端生成的連線例項,addr為連線地址 conn, addr = server.accept() # 等待連線 while True: #建立連線後迴圈接收資料 data = conn.recv(1024) # 接收資料 print('server receive: ', data) conn.send(data.upper()) # 傳送資料 server.close()