RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

socket 編程基礎入門

科技綠洲 ? 來源:網(wǎng)絡整理 ? 作者:網(wǎng)絡整理 ? 2024-11-12 14:03 ? 次閱讀

Socket 編程基礎入門

在計算機網(wǎng)絡中,Socket 是一個抽象層,它將網(wǎng)絡通信的細節(jié)隱藏起來,為開發(fā)者提供了一個簡單的接口來發(fā)送和接收數(shù)據(jù)。Socket 編程是網(wǎng)絡編程的基礎,它允許程序之間進行通信。本文將帶你入門 Socket 編程,幫助你理解基本概念和步驟。

1. Socket 的基本概念

Socket 是一個通信端點,它允許程序發(fā)送和接收數(shù)據(jù)。在 TCP/IP 協(xié)議族中,有兩種主要類型的 Socket:流式 Socket(Stream Sockets,基于 TCP)和數(shù)據(jù)報 Socket(Datagram Sockets,基于 UDP)。

  • 流式 Socket(TCP) :提供面向連接、可靠的字節(jié)流服務。數(shù)據(jù)傳輸是有序的,并且保證數(shù)據(jù)的完整性。
  • 數(shù)據(jù)報 Socket(UDP) :提供無連接服務,數(shù)據(jù)包可能丟失或亂序到達,但不保證數(shù)據(jù)的完整性。

2. Socket 編程步驟

Socket 編程通常包括以下幾個步驟:

  1. 創(chuàng)建 Socket :在客戶端和服務器端都需要創(chuàng)建一個 Socket 對象。
  2. 綁定地址 :服務器端需要將 Socket 綁定到一個 IP 地址和端口號上。
  3. 監(jiān)聽連接 :服務器端需要監(jiān)聽客戶端的連接請求。
  4. 接受連接 :服務器端接受客戶端的連接請求,建立連接。
  5. 數(shù)據(jù)傳輸 :客戶端和服務器端可以開始發(fā)送和接收數(shù)據(jù)。
  6. 關閉連接 :數(shù)據(jù)傳輸完成后,需要關閉 Socket 連接。

3. TCP Socket 編程示例

下面是一個簡單的 TCP Socket 編程示例,包括客戶端和服務器端代碼。

服務器端代碼(Python):
import socket

# 創(chuàng)建 socket 對象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 獲取本地主機名
host = socket.gethostname()
port = 9999

# 綁定端口號
server_socket.bind((host, port))

# 設置最大連接數(shù),超過后排隊
server_socket.listen(5)

while True:
# 建立客戶端連接
client_socket, addr = server_socket.accept()

print(f"連接地址: {str(addr)}")

while True:
# 接收小于 1024 字節(jié)的數(shù)據(jù)
data = client_socket.recv(1024)
if not data:
# 如果沒有數(shù)據(jù),跳出循環(huán)
break
# 發(fā)送數(shù)據(jù)
client_socket.send(data)

# 關閉連接
client_socket.close()
客戶端代碼(Python):
import socket

# 創(chuàng)建 socket 對象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 獲取本地主機名
host = socket.gethostname()
port = 9999

# 連接服務,指定主機和端口
client_socket.connect((host, port))

try:
# 發(fā)送數(shù)據(jù)
message = 'This is the message.'
client_socket.send(message.encode('utf-8'))

# 接收小于 1024 字節(jié)的數(shù)據(jù)
data = client_socket.recv(1024)
print(f"Received: {data.decode('utf-8')}")

finally:
# 關閉連接
client_socket.close()

4. UDP Socket 編程示例

UDP Socket 編程與 TCP 類似,但不需要建立連接。

服務器端代碼(Python):
import socket

# 創(chuàng)建 socket 對象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 獲取本地主機名
host = socket.gethostname()
port = 9998

# 綁定端口號
server_socket.bind((host, port))

while True:
# 接收數(shù)據(jù)和客戶端地址
data, addr = server_socket.recvfrom(1024)
print(f"Received message: {data} from {addr}")

# 發(fā)送數(shù)據(jù)
server_socket.sendto(data, addr)
客戶端代碼(Python):
import socket

# 創(chuàng)建 socket 對象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 獲取本地主機名
host = socket.gethostname()
port = 9998

# 發(fā)送數(shù)據(jù)
message = 'This is a UDP message.'
client_socket.sendto(message.encode('utf-8'), (host, port))

# 接收數(shù)據(jù)
data, server = client_socket.recvfrom(1024)
print(f"Received: {data.decode('utf-8')} from {server}")

# 關閉連接
client_socket.close()

5. 總結

Socket 編程是網(wǎng)絡編程的基礎,通過本文的介紹,你應該對 Socket 的基本概念和編程步驟有了初步的了解。無論是 TCP 還是 UDP,Socket 都提供了一個簡單的接口來實現(xiàn)網(wǎng)絡通信。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8575

    瀏覽量

    151014
  • Socket
    +關注

    關注

    0

    文章

    212

    瀏覽量

    34664
  • 編程
    +關注

    關注

    88

    文章

    3614

    瀏覽量

    93685
  • 網(wǎng)絡通信

    關注

    4

    文章

    797

    瀏覽量

    29795
收藏 人收藏

    評論

    相關推薦

    Linux+Socket編程

    本內容詳細講述了Linux+Socket編程技巧指南,適合所有學習編程的廣大用戶使用
    發(fā)表于 06-10 11:19 ?0次下載
    Linux+<b class='flag-5'>Socket</b><b class='flag-5'>編程</b>

    C語言SOCKET編程指南

    這個文檔是一個指南,而不是參考書。如果你剛開始socket 編程并想找一本入門書,那么你是我的讀者。但這不是一本完全的socket 編程書。
    發(fā)表于 12-09 14:58 ?0次下載

    SOCKEt編程介紹

    這個文檔是一個指南,而不是參考書。如果你剛開始 socket 編程并想找一本入門書,那么你是我的讀者。但這不是一本完全的 socket 編程
    發(fā)表于 03-02 15:36 ?4次下載

    linux-網(wǎng)絡編程-socket編程

    linux開發(fā)編程教程資料——linux-網(wǎng)絡編程-socket編程,感興趣的小伙伴們可以看一看。
    發(fā)表于 08-23 16:23 ?0次下載

    MFC-socket編程

    計算機上的上位機制作工具語言之MFC-socket編程
    發(fā)表于 09-01 14:55 ?0次下載

    Socket網(wǎng)絡編程

    計算機學習相關知識學習教程之Socket網(wǎng)絡編程
    發(fā)表于 09-01 15:01 ?0次下載

    Windows-Socket-API編程

    Windows-Socket-API編程教程,感興趣的可以看看。
    發(fā)表于 09-01 15:27 ?0次下載

    socket是什么意思_socket編程是什么意思_socket詳解

    編程語言的角度,socket是一個無符號整型變量,用來標識一個通信進程。兩個進程通信,總要知道這幾個信息:雙方的ip地址和端口號,通信所采用的協(xié)議棧。socket就是和這些東西綁定的,實現(xiàn)s
    發(fā)表于 12-28 17:21 ?2.4w次閱讀

    基于Socket的java通信編程詳解

    Java最初是作為網(wǎng)絡編程語言出現(xiàn)的,其對網(wǎng)絡提供了高度的支持,使得客戶端和服務器的溝通變成了現(xiàn)實,而在網(wǎng)絡編程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket
    發(fā)表于 12-28 17:37 ?2833次閱讀
    基于<b class='flag-5'>Socket</b>的java通信<b class='flag-5'>編程</b>詳解

    SOCKET入門最簡單的程序免費下載

    本文檔的主要內容詳細介紹的是SOCKET入門最簡單的程序免費下載。
    發(fā)表于 07-17 17:39 ?0次下載
    <b class='flag-5'>SOCKET</b><b class='flag-5'>入門</b>最簡單的程序免費下載

    Socket 網(wǎng)絡編程框架介紹

    Socket 網(wǎng)絡編程框架 Socket(套接字)是一個網(wǎng)絡編程概念,描述了一個通信端點(Endpoint),用于建立網(wǎng)絡連接(Connection)并傳輸數(shù)據(jù)。 Linux Kern
    的頭像 發(fā)表于 11-09 14:19 ?1085次閱讀
    <b class='flag-5'>Socket</b> 網(wǎng)絡<b class='flag-5'>編程</b>框架介紹

    如何理解socket編程接口

    Socket編程接口是一種網(wǎng)絡編程的基本概念,它提供了一種在不同計算機之間進行通信的方法。 Socket編程接口的基本概念 1.1
    的頭像 發(fā)表于 08-16 10:48 ?405次閱讀

    什么是socket編程 socket與tcp/ip協(xié)議的關系

    什么是Socket編程 Socket編程是一種網(wǎng)絡編程技術,它允許程序之間進行通信。在計算機科學中,so
    的頭像 發(fā)表于 11-01 16:01 ?288次閱讀

    socket編程中的阻塞與非阻塞

    在網(wǎng)絡編程中, socket 是一個非常重要的概念,它提供了一個抽象層,使得開發(fā)者可以不必關心底層的網(wǎng)絡通信細節(jié)。 socket 編程中的阻塞與非阻塞模式是兩種不同的操作方式,它們對程
    的頭像 發(fā)表于 11-01 16:13 ?189次閱讀

    C語言中的socket編程基礎

    Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網(wǎng)絡
    的頭像 發(fā)表于 11-01 16:51 ?300次閱讀
    RM新时代网站-首页