基於tcp的socket通訊

2022-06-22 22:54:16 字數 1804 閱讀 6715

#socekt是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它

#把複雜的tcp/ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議

#socket

#基於檔案型別的套接字家族(一般不用)

#套接字家族的名字:af_unix

#unix一切皆檔案、基於檔案的套接字呼叫的就是底層的檔案系統來取資料,兩個套接字程序執行在同乙個機器上,可以通過訪問同乙個檔案系統間接完成通訊

#基於網路型別的套接字家族

#套接字家族的名字:af_inet(代表ipv4),常用

#還有af_inet6被用於ipv6

server.py

import

socket

sk = socket.socket() #

建立乙個socket

#sk.setsockopt(socket.sol_socket, socket.so_reuseport, 1) # 避免服務重啟的時候報address already in use。加上這個解決

sk.bind(('

127.0.0.1

', 8080)) #

繫結,接收的引數是乙個元組

sk.listen() #

監聽conn, addr = sk.accept() #

#print(conn, addr)

ret = conn.recv(1024) #

接收客戶端資料

print(ret.decode('

utf-8

')) #

解碼顯示

str = '你好'

#conn.send(str.encode('utf-8')) # 給客戶端傳送資料,在網路上只能傳輸bytes型別,也就是二進位制

#conn.send(b'hello client')

conn.send(bytes('

你好', encoding='

utf-8'))

conn.close()

#關閉與客戶端的鏈結

sk.close() #

關閉socekt

client.py

import

socket

sk = socket.socket() #

建立socket

sk.connect((

'127.0.0.1

', 8080)) #

客戶端發起鏈結

str = '

你好服務端'#

sk.send(str.encode('utf-8')) # 編碼傳送

#sk.send(bytes('你好服務端', encoding='utf-8'))

sk.send(bytes('

你好服務端

'.encode('

utf-8

')))

ret = sk.recv(1024)

print(ret.decode('

utf-8

')) #

解碼sk.close()

基於TCP的Socket通訊

在win32平台上的winsock程式設計都要經過下列步驟 定義變數 獲得windock版本 載入winsock庫 初始化 建立套接字 設定套接字選項 關閉套接字 解除安裝winsock庫 釋放資源 1 建立乙個socket,用函式socket int socket int domain,int t...

基於TCP協議的socket通訊

一 伺服器端 1 建立serversocket,即伺服器端的socket,繫結指定的埠,並偵聽此埠 serversocket server new serversocket 8888 2 呼叫accept 方法,開始偵聽,等待客戶端的連線,在未連線成功之前,處於阻塞狀態,返回的socket,用於與客...

基於tcp和udp的socket通訊

做個小遊戲的project用到了socket程式設計,於是,就在網上查閱了一下資料,下面簡單總結一下。1.什麼是socket socket是在應用層與傳輸層之間的乙個抽象層,它把tcp ip層複雜的操作抽象為幾個介面 用層的程序實現網路通訊,使得不同主機的相關程序之間交換資料。2.什麼是tcp和ud...