python網路程式設計 udp和tcp

2021-09-24 02:11:28 字數 4331 閱讀 5576

udp伺服器

import socket

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

s.bind(

("192.168.1.103"

,8888))

while

true

: data, addr = s.recvfrom(

1024

)print

("%s : %s"%(

str(addr)

, data.decode(

"gbk"))

) msg =

input

("客服請輸入:"

) s.sendto(msg.encode(

"utf-8"

), addr)

udp客戶端
import socket

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

while

true

: msg =

input

("使用者說話:"

) addr =

("192.168.1.103"

,8080

) s.sendto(msg.encode(

"utf-8"

), addr)

data = s.recvfrom(

1024

)print

("%s : %s"%(

str(data[1]

), data[0]

.decode(

"gbk"))

)

tcp伺服器
import socket

defmain()

: server_socket = socket.socket(socket.af_inet, socket.sock_stream)

server_socket.bind(

("192.168.1.103"

,8888))

server_socket.listen(11)

# 半連線池 在服務端會有乙個佇列,這裡代表服務端最高只能接受11個請求數(並不是連線數)

while

true

:print

("等待新使用者鏈結....."

) client_socket, addr = server_socket.accept(

)print

("%s 已成功連線"

%str

(addr)

)while

true

: data = client_socket.recv(

1024)if

not data:

# 如果為空 就是客戶斷開鏈結 結束對話

print

("%s 已斷開鏈結 結束對話"

%str

(addr)

)break

print

("%s : %s"%(

str(addr)

, data.decode(

"gbk"))

) msg =

input

("客服請輸入:"

) client_socket.send(msg.encode(

"utf-8"))

if __name__ ==

"__main__"

: main(

)

tcp客戶端
import socket

defmain()

: client_socket = socket.socket(socket.af_inet, socket.sock_stream)

ip =

input

("請輸入目標ip:"

) port =

int(

input

("請輸入目標埠:"))

addr =

(ip, port)

# 鏈結伺服器,進行tcp三次握手

client_socket.connect(addr)

while

true

: msg =

input

("使用者輸入:"

) client_socket.send(msg.encode(

"utf-8"))

# 接收對方傳送過來的資料,最大接收1024個位元組

data = client_socket.recv(

1024

)print

("%s : %s"%(

str(addr)

, data.decode(

"gbk"))

) client_socket.close(

)if __name__ ==

"__main__"

: main(

)

tcp的優勢

tcp注意點

客戶端

import socket

defmain()

: client_socket = socket.socket(socket.af_inet, socket.sock_stream)

ip =

input

("請輸入目標伺服器ip:"

) port =

int(

input

("請輸入目標伺服器端口:"))

addr =

(ip, port)

client_socket.connect(addr)

file_name =

input

("請輸入檔名:"

) client_socket.send(file_name.encode(

"utf-8"))

data = client_socket.recv(

1024

*1024

)while data:

with

open

("new"

+ file_name,

"wb"

)as f:

f.write(data)

client_socket.close(

)if __name__ ==

"__main__"

: main(

)

伺服器

import socket

defget_content

(file_name)

:try

:with

open

(file_name,

"rb"

)as f:

content = f.read(

)return content

except

:print

(% file_name)

defmain()

: server_socket = socket.socket(socket.af_inet, socket.sock_stream)

server_socket.bind(

("192.168.1.103"

,8888))

server_socket.listen(11)

while

true

: client_socket, addr = server_socket.accept(

)print()

data = client_socket.recv(

1024

) file_name = data.decode(

"utf-8"

)print

(% file_name)

file_content = get_content(file_name)

# 因為是rb讀取的 read(***, "rb")操作返回的是bytes 所以無需編碼

if file_content:

client_socket.send(file_content)

client_socket.close(

)if __name__ ==

"__main__"

: main(

)

Python網路程式設計之UDP

udp處理資料報,是一種無連線的協議 伺服器端 server socket.socket socket.af inet,socket.sock dgram 繫結ip server.bind 192.168.1.104 221 while true 接收 data,address server.rec...

網路程式設計 TCP和UDP

在網路通訊協議下不同計算機上執行的程式,可以進行資料傳輸 ip位址 ip位址可以唯一標識網路中的裝置 埠埠號可以標識裝置中的應用程式 協議常見udp tcp 方法名說明 datagramsocket 建立資料報套接字並將其繫結到本機位址上的任何可用埠 datagrampacket byte buf,...

UDP網路程式設計

基於udp 伺服器 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到socket上,用函式bind 3.迴圈接收資料,用recvfrom 4.關閉網路連線。基於udp 客戶端 程式步驟 1.建立乙個socket,用socket 函式 2.繫結ip位址 埠等資訊到...