UDP TCP網路程式設計

2021-10-03 10:57:31 字數 3536 閱讀 3541

建立udp網路程式流程:

import socket

#建立乙個udp的socket連線

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

#獲取使用者的輸入內容

data =

input

('請輸入內容'

)#準備接收方的位址和埠號

addr =

('127.0.0.1'

,8080

)#將使用者輸入的內容進行編碼,併發送到指定的位址和埠

udp_socket.sendto(data.encode(

'gbk'

),addr)

#接收傳遞過來的訊息,並指定接受的位元組大小

recv_data = udp_socket.recvfrom(

1024

)#接收到的物件是乙個元組,元組裡有兩個元素

print

(recv_data)

#元組裡的第乙個資料顯示接收到的內容

print

(recv_data[0]

.decode(

'gbk'))

#元組裡的第二個資料顯示傳送方的位址和埠號

print

(recv_data[1]

)#關閉socket連線

udp的埠號一般不繫結 但是如果需要做成乙個伺服器端的程式的話,是需要繫結的,例如110,119,120都必須固定

from socket import

*#建立套接字

udp_socket = socket(af_inet,sock_dgram)

#繫結本地的相關資訊,如果乙個網路程式不繫結,則系統隨機分配

local_addr =(''

,7788

)udp_socket.bind(local_addr)

#等待接收對方發來的資料

recv_data = udp_socket.recvfrom(

1024

)#顯示資料

print

(recv_data[0]

.decode(

'gbk'))

#關閉套接字

總結

from socket import

*def

get_file_content

(file_name)

:"""獲取檔案的內容"""

try:

with

open

(file_name,

"rb"

)as f:

content = f.read(

)return content

except

:print

(% file_name)

defmain()

:# 建立socket

tcp_server_socket = socket(af_inet, sock_stream)

# 本地資訊

address =(''

,7890

)# 繫結本地資訊

tcp_server_socket.bind(address)

# 將主動套接字變為被動套接字

tcp_server_socket.listen(

128)

while

true

:# 等待客戶端的鏈結,即為這個客戶端傳送檔案

client_socket, clientaddr = tcp_server_socket.accept(

)# 接收對方傳送過來的資料

recv_data = client_socket.recv(

1024

)# 接收1024個位元組

file_name = recv_data.decode(

"utf-8"

)print

(% file_name)

file_content = get_file_content(file_name)

# 傳送檔案的資料給客戶端

# 因為獲取開啟檔案時是以rb方式開啟,所以file_content中的資料已經是二進位制的格式,因此不需要encode編碼

if file_content:

client_socket.send(file_content)

# 關閉這個套接字

client_socket.close(

)# 關閉監聽套接字

tcp_server_socket.close(

)if __name__ ==

'__main__'

: main(

)

tcp客戶端

from socket import

*def

main()

:# 建立socket

tcp_client_socket = socket(af_inet, sock_stream)

# 目的資訊

server_ip =

input

("請輸入伺服器ip:"

) server_port =

int(

input

("請輸入伺服器port:"))

# 鏈結伺服器

tcp_client_socket.connect(

(server_ip, server_port)

) file_name =

input()

tcp_client_socket.send(file_name.encode(

"utf-8"))

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

recv_data = tcp_client_socket.recv(

1024

)# print('接收到的資料為:', recv_data.decode('utf-8'))

# 如果接收到資料再建立檔案,否則不建立

if recv_data:

with

open

("[接收]"

+file_name,

"wb"

)as f:

f.write(recv_data)

# 關閉套接字

tcp_client_socket.close(

)if __name__ ==

"__main__"

: main(

)

Java之網路程式設計 UDP TCP

網路模型七大模型 物理層 資料鏈路層 網路層 傳輸層 會話層 表示層 應用層 ip位址 確定主機在網路中的位置 ipv4 四位0 255來組成 10.9.20.254 埠 用於和計算機外界進行資料互動的媒介 埠號 0 65535 埠號在 0 1024之間大部分都被系統提前占用了 最好以後指定埠號時盡...

基於UDP TCP網路套接字程式設計

傳輸層基於udp的網路通訊流程 客戶端 服務端 1.建立套接字 返回套接字控制代碼 socket 1.建立套接字 返回套接字控制代碼 2.為套接字繫結位址和埠 bind 2.為套接字繫結位址和埠 3.傳送資料 sendto 3.開始接收資料 4.接收資料 recvfrom 4.恢復資料 5.關閉套接...

socket程式設計 UDP TCP

1.socket簡介 socket,又叫套接字,是一種軟體形式的抽象,用於表達兩台機器間乙個連線的 終端 服務端的socket在服務端機器上特定的埠進行等待,客戶端的socket繫結了服務端的ip位址以及它正在監聽著的埠,所以兩者通過ip和埠連線起來,就如同一條虛擬的通道。sockets 套接字 程...