淺談自己理解的socket(1)
阿新 • • 發佈:2019-01-06
一、socket是什麼?
Socket是程序通訊的一種方式,即呼叫這個網路庫的一些API函式實現分佈在不同主機的相關程序之間的資料交換。
因此可以socket這種方式實現程序間的通訊。
二、客戶端服務端模式
1、在TCP/IP網路應用中,通訊的兩個程序間相互作用的主要模式是客戶/伺服器(Client/Server,C/S)模式,即客戶向伺服器發出服務請求,伺服器接收到請求後,提供相應的服務。
2、兩個程序間的通訊完全是非同步的,相互通訊的程序間既不存在父子關係,又不共享記憶體緩衝區,因此需要一種機制為希望通訊的程序間建立聯絡,為二者的資料交換提供同步,這就是基於客戶/伺服器模式的TCP/IP。
3、以下具體來看一下TCP/IP模型
三、利用python現實的一個簡單的TCP/IP模型
1、伺服器端程式碼
#TCP/IP的伺服器端 import socket import os #IP and port server_address = ('localhost', 6666) #create a socket server_socket = socket.socket() #bind to the address and listen the connection server_socket.bind(server_address) server_socket.listen(5) while True: conn, addr = server_socket.accept() print('a new connection from', addr) data = conn.recv(1024) print('the length of received message is',len(data), 'bytes') #change all letters to uppercase conn.send(data.upper()) server_socket.close()
2、客戶端程式碼
#TCP/IP的客戶端
import socket
conn_address = ('localhost', 6666)
#create a socket
client_socket = socket.socket()
#connect to the server_socket
client_socket.connect(conn_address)
client_socket.send(b'I will become stronger and stronger')
data = client_socket.recv(1024)
print(data)
3、以上程式碼只是簡單的TCP/IP模型,並沒有實現多個客戶端接入時的併發處理,只實現了一個客戶端的接入請求。下一篇部落格將對上述伺服器端和客戶端進行改進,可以實現客戶端多次的連結,但是並沒有利用多執行緒和多程序。