高階程式設計之 socker程式設計

2021-10-01 23:41:39 字數 3206 閱讀 5709

用來標記網路上的一台電腦

window:

ifconfig
linux:

ipconfig
1-1-3-1. ipv4(被廣泛使用的)

ip協議的版本號是4

當前再用,目前被廣泛應用

ipv4的位址位數為32位(4位位元組)

位址有限,幾乎全部耗盡

1-1-3-2. ipv6

ip協議的版本號是6

ipv6的位址位數字128位(16位位元組)

80埠分配給http服務

21埠分配給ftp服務

。範圍是從0到1023

動態埠的範圍是從1024-65535

tcp/ip協議

tcp/ip 定義了電子裝置如何連入網際網路,以及資料如何在它們之間傳輸的標準。協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的協議來完成自己的需求。

tcp/ip協議模型

socker建立套接字

使用套接字收/發資料

關閉套接字

2-2-1. udp傳送與接收程式

udp傳送資料

import socket

defmain()

:# 建立乙個udp套接字

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

udp_socket.sento(b'nihao',(

'192168.0.162'

,8080

)# 關閉socker

udp_socket.close(

)if __name__ ==

'__main__'

: main(

)

udp接收資料建立套接字

繫結本地資訊(ip和埠)

接收資料

列印資料

關閉套接字

import socket

defmain()

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

# 1 建立套接字

bind_addr =(''

,7789

)# 不寫ip,表示本機的任何乙個ip

udp_socket.bind(bind_addr)

# 2 繫結本地資訊

while

true

: recv_data = udp_socketrecvfrom(

1024

)# 3. 1024 表示本次接收最大位元組數

recv = recv_data[0]

send_data = recv_data[1]

print

("{}:{}"

.format

(str

(send_data)

, recv.decode(

'gbk'))

# 4. 列印資料

udp_socket.close(

)# 5. 關閉套接字

if __name__ ==

'__main__'

: main(

)

埠繫結問題如果程式執行時,沒有繫結埠,那麼作業系統會自動分配乙個埠給程式。而且同意埠,不能用兩次。

udp聊天器

建立套接字,套接字是可以同時收發資料的

傳送資料

接收資料

2-3. tcp客戶端與服務端

tcp介紹

tcp特點

面向連線:

可靠傳輸:

tcp與udp區別總給

cp面向連線;udp是無連線的,即傳送資料之前不需要建立連線。

tcp提供可靠的服務。也就是說,通過tcp連線傳送的資料,無差錯,不丟失,不重複,且按序到達;udp盡最大努力交付,即不保證可靠交付。

udp具有較好的實時性,工作效率比tcp高,適用於對高速傳輸和實時性有較高的通訊或廣播通訊。

每一條tcp連線只能是點到點的;udp支援一對一,一對多,多對一和多對多的互動通訊。

tcp對系統資源要求較多,udp對系統資源要求較少。

udp 通訊

tcp 通訊

tcp 客戶端與服務端的定義

伺服器端:就是提供服務的一方,而客戶端,就是需要被服務的一方

tcp客服端

構建流程:

建立socket

鏈結伺服器

接收資料(最大接收2014位元組)

關閉套接字

tcp服務端

socket建立套接字

bind繫結ip和port

listen使套接字變為可以被動鏈結

accept等待客戶端的連線

recv/send接收傳送資料

tcp服務端為多個客戶端服務

tcp客戶端

建立套接字

目的資訊 伺服器的ip和port

連線伺服器

接收對方傳送過來的資料

接收到資料在建立檔案、

關閉套接字

tcp服務端

socket建立套接字

bind繫結ip和port

listen使套接字變為可以被動鏈結

accept等待客戶端的鏈結

recv/send接收傳送資料

高階程式設計之網路程式設計(三)

io 模型 1 阻塞模型 fifo pipe read fgetc fgets fread recv recvfrom 以上獲取資料的函式預設都是阻塞方式接收資料。2 非阻塞模型 2.1 在開始階段的open函式部分調整 open fifo o rdonly o nonblock 函式 open r...

C 高階程式設計之「反射」

一,定義 反射技術,能夠讓託管 在執行時檢視元資料以及 的各方面資訊。二,常用方法 1,獲取物件方法 必須以public修飾的方法,不包括建構函式 2,獲取物件屬性 3,獲取物件的父類 附示例 using system using system.collections.generic using s...

高階程式設計之目錄(一)

目 錄 流 1.dir opendir const char name 功能 開啟乙個目錄獲得乙個目錄流指標 引數 name 檔名 返回值 成功目錄流指標 失敗返回null 2.struct dirent readdir dir dirp 功能 從目錄流中讀到乙個檔案的資訊 引數 dirp 目錄流指...