Python socket之不同的電腦間通訊

2021-10-21 07:46:56 字數 2090 閱讀 8817

tcp

import socket

# socket可以在不同的電腦通訊,還可以在同乙個電腦的不同程式通訊

# 建立乙個基於udp的網路socket連線

# af_inet:表示這個socket是用來進行網路連線

# sock_dgram:表示連線是乙個udp連線

s = socket.socket(socket.af_inet,socket.sock_dgram)

# 傳送資料

# data:要傳送的資料,它是二進位制的資料

# 給192.168.31.199這台主機的9000埠上傳送了hello

s.sendto(

'hello'

.encode(

'utf8'),

('192.168.31.199'

,9000))

# 關閉socket

s.close(

)

import socket

# 建立乙個基於udp的網路socket連線

s = socket.socket(socket.af_inet,socket.sock_dgram)

# 繫結埠號和ip位址

s.bind(

'192.168.31.199'

,9000

)# recvfrom接收資料

# content = s.recvfrom()

# print(content)

# 接收到的資料是乙個元祖,元祖裡有兩個元素

# 第0個元素是接收到的資料,第1個元素是傳送方的ip位址和埠號

data,addr = s.recvfrom(

)print

('從{}位址{}埠號接收到了訊息,內容是:{}'

.format

(addr[0]

,addr[1]

,data.decode(

'utf8'))

)s.close(

)

# 客戶端

import socket

# 建立乙個基於tcp的socket連線

s = socket.socket(socket.af_inet,socket.sock_stream)

# 在傳送資料之前,必須要先和伺服器建立連線

# 呼叫connect方法連線到伺服器

s.connect(

('192.168.1.104'

,9000))

s.send(

'hello'

.encode(

'utf8'))

# udp直接使用sendto傳送資料

# s.sendto('hello'.encode('utf8'),('192.168.1.104',9000))

s.close(

)

import socket

# 建立乙個基於tcp的socket連線

s = socket.socket(socket.af_inet,socket.sock_stream)

s.bind(

('192.168.1.104'

,9000))

s.listen(

128)

# 把socket變成乙個被動監聽的socket

client_socket,client_addr = s.accept(

)# 接收客戶端的請求,接收到的結果是乙個元祖,元阻裡有兩個元素,第0個元素是客戶端的socke連線,第1個元素是客戶端的ip位址和埠號t

data = client_socket.recv(

1024

)# tcp裡使用recv獲取資料,(udp裡接收資料,使用的recvfrom)

print

('接收到了{}客戶端{}埠號傳送的資料,內容是{}'

.format

(client_addr[0]

,client_addr[1]

,data.decode(

'utf8'))

)s.close(

)

tcp參考鏈結

python socket模組之常用函式

1 socket的例項 socket例項化的格式為 socket family,type protocal 其中,三個引數中的family是要使用的位址族。常用的協議族 af inet af inet6 af local 或稱af unix unix域 socket af route等。預設值為so...

Python Socket 程式設計

client import socket,sys if name main 處理引數 argv sys.argv if len argv 3 or len argv 2 and argv 1 print useage argv 0 sys.exit 0 host argv 1 server ip位址...

python socket程式設計

python 編寫server的步驟 1.第一步是建立socket物件。呼叫socket建構函式。如 socket socket.socket family,type family引數代表位址家族,可為af inet或af unix。af inet家族包括internet位址,af unix家族用於...