建立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 套接字 程...