python通過套接字來傳送接收訊息

2022-06-25 18:18:08 字數 2403 閱讀 6847

案例如下:

1、啟動乙個服務端套接字服務

2、啟動乙個客戶端套接字服務

3、客戶端向服務端傳送乙個hello,服務端則回覆乙個word,並列印

服務端**:

#

coding:utf-8

import

socket

import

time

class

server:

def__init__

(self,host,port):

self.port =port

self.host =host

self.status =0

self.buf_size = 1024

defcreateserver(self):

self.server =socket.socket(socket.af_inet, socket.sock_stream)

self.server.bind((self.host, self.port))

defstartserver(self):

self.status = 1self.createserver()

#設定接收的連線數為1

self.server.listen(1)

client, address =self.server.accept()

while self.status == 1: #

迴圈收發資料報,長連線

data =client.recv(self.buf_size)

text =data.decode()

if text != ""

:

print(text) #

python3 要使用decode

client.send("

world

".encode())

#client.close() #連線不斷開,長連線

if__name__ == "

__main__":

server = server("

localhost

",8083)

server.createserver()

server.startserver()

客戶端**:

#

coding:utf-8

import

socket

import

time

import

threading

class

client:

def__init__

(self,host,port):

self.port =port

self.host =host

self.status =0

self.buf_size = 1024

defconnect(self):

self.client =socket.socket(socket.af_inet, socket.sock_stream)

self.client.setsockopt(socket.sol_socket, socket.so_keepalive, 1) #

在客戶端開啟心跳

self.client.connect((self.host, self.port))

defsend(self,mes):

client.startresv()

while

true:

self.client.send(mes.encode())

time.sleep(1) #

如果想驗證長時間沒發資料,socket連線會不會斷開,則可以設定時間長一點

defresv(self):

while

true:

data =self.client.recv(self.buf_size)

text =data.decode()

print

(text)

defstartresv(self):

t = threading.thread(target=self.resv)

t.start()

defclose(self):

self.client.close()

if__name__ == "

__main__":

client = client("

localhost

",8083)

client.connect()

client.send(

"hello

")

執行如下圖:

python套接字 python套接字基本使用

socket socket通常也稱作 套接字 用於描述ip位址和埠,應用程式通常通過 套接字 向網路發出請求或者應答網路請求,可以認為是一種計算機網路的資料結構,介面。它是網路程式設計的基礎 套接字還分為面向連線的和無連線的 第一種是指tcp型別套接字,在通訊前需要建立連線,這種連線是較為可靠的,使...

python套接字程式設計 python套接字程式設計

服務端 usr bin python coding utf 8 import socket s socket.socket host socket.gethostname port 12345 s.bind host,port s.listen 5 while true c,addr s.accep...

18 3 3 套接字位址

每個套接字域都有獨特的位址格式。對於乙個 af unix 套接字來說,它的位址是由乙個包含在 sys un.h 標頭檔案裡的 sockaddr un 結構描述的。該結構的定義為 struct sockaddr un 因為不同型別的位址都需要傳遞到對套接字程序處理的系統呼叫裡去,所以定義各種位址格式時...