socket網路程式設計

2021-10-23 00:17:44 字數 2503 閱讀 8299

人生道路上:希望自己做到保持簡單,保持學習,保持嚴謹!

第一:計算機通訊原理

1.osi七層模型

應用層:網路服務與終端使用者的乙個介面。

表示層:資料的表示、安全、壓縮。(在五層模型裡面已經合併到了應用層)格式有,jpeg、ascll、decoic、加密格式等

會話層:建立、管理、終止會話。(在五層模型裡面已經合併到了應用層)對應主機程序,指本地主機與遠端主機正在進行的會話

傳輸層:定義傳輸資料的協議埠號,以及流控和差錯校驗。協議有:tcp udp,資料報一旦離開網絡卡即進入網路傳輸層

資料鏈路層:建立邏輯連線、進行硬體位址定址、差錯校驗 [2] 等功能。(由底層網路定義協議)將位元組合成位元組進而組合成幀,用mac位址訪問介質,錯誤發現但不能糾正。

物理層:建立、維護、斷開物理連線。

2.客戶端與服務端通訊原理

第一步:b機器與a機器建立連線,a機器上有很多服務,故要指明具體連線哪乙個服務(ip+port,ip相當於總機,port相當於分機號)

第二步:訪問服務

第三步:服務響應客戶端請求(同理,也要ip+port,指明回給客戶端哪乙個服務)

第二:socket介紹

1.實現乙個簡單的socket(偽**)

第一步:

socket socket = getsocket(type = "tcp")  #設定好協議型別

第二步:

connect(socket, address = "1.2.3.4", port = "80") #連線遠端機器

第三步:

send(socket, "hello, world!") #傳送訊息

第四步:

close(socket) #關閉連線

2.建立客戶端和服務端通訊2.1.客戶端(偽**)

import socket

socket.tcp/ip #指定協議型別

connect(a.ip,a.port) #建立連線

socket.send(hello world!) #傳送請求

socket.recv() #接收資料

socket.close() #關閉連線

2.2.服務端(偽**)

import socket

socket.tcp/ip #宣告協議型別

listen(a.ip,a.port) #在這個介面監聽,一般多個網絡卡,故也要指定網絡卡,要是沒有可預設:0.0.0.0

waiting() #等資料請求過來

socket.recv() #接收資料

socket.send() # 返回資料

socket.close() #關閉連線,也可以不關閉,服務端可以等很多人來連線

第三:實現socket簡單例項1.客戶端:

import socket

# 客戶端

client = socket.socket() # 宣告socket型別,同時生成socket連線物件

client.connect(('localhost', 6969))

client.send(b"hello czy!")

data = client.recv(1024) # 接收回應資料

print('接受到的資料為:', data)

client.close()

"""執行結果:

接受到的資料為: b'okokokok'

"""

2.服務端:

import socket

# 服務端

server = socket.socket()

server.bind(('localhost', 6969)) # 繫結要監聽的埠

server.listen()

print("我要開始等待對方請求了")

# conn就是客戶端連線過來的時候,伺服器為其生成的乙個連線例項

conn, address = server.accept() # 等**打進來

print(conn, address)

print("請求來了")

data = conn.recv(1024)

print('客戶端請求資料為:', data)

conn.send(b"okokokok")

"""執行結果:

我要開始等待對方請求了

('127.0.0.1', 10068)

請求來了

客戶端請求資料為: b'hello czy!'

"""

網路程式設計 Socket程式設計

一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...

socket網路程式設計

首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...

Socket網路程式設計

socket 網路程式設計 在c free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構 main.h ifndef main h define main h include bool winapi main proc hwnd hwnd,uint umsg,wparam wparam...