日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转载:socket通信基础

發布時間:2025/3/13 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转载:socket通信基础 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 一、socket通信的概念
  • 二、套接字(socket)
  • 三、socket通信的過程
  • 在這里插入圖片描述 四、客戶/服務端模式
    • 服務端的工作流程
    • 2、客戶端的工作流程
  • 在這里插入圖片描述 五、注意事項
    • 1、別去糾纏細節
    • 2、服務端程序綁定地址
    • 3、服務端程序綁定的通信端口
    • 4、客戶端程序指定服務端的ip地址
    • 5、客戶端程序指定服務端的通信端口
    • 6、send函數
    • 7、recv函數
    • 8、服務端有兩個socket
    • 9、程序退出時先關閉socket
  • 六、相關的庫函數
    • 1、socket函數
    • 2、gethostbyname函數
    • 3、connect函數
    • 4、bind函數
    • 5、listen函數
    • 6、accept函數
    • 7、函數小結
  • 七、課后作業
  • 八、版權聲明

各位兄弟,在學習Linux編程基礎之前,一定要先學習Linux基礎知識和計算機網絡基礎知識,如果對這兩方面的基礎知識和基本概念不熟,談不上Linux編程和網絡通信編程。

一、socket通信的概念

socket也稱作“套接字”,描述了計算機的IP地址和端口,運行在計算機中的程序之間采用socket進行數據通信。通信的兩端都有socket,它是一個通道,數據在兩個socket之間進行傳輸。

socket把復雜的TCP/IP協議族隱藏在socket接口后面,對程序員來說,只要用好socket相關的函數,就可以完成數據通信。

二、套接字(socket)

TCP提供了流(stream)和數據報(datagram)兩種通信機制,所以套接字也分為流套接字和數據報套接字。

流套接字的類型是SOCK_STREAM,它提供的是一個有序、可靠、雙向字節流的連接,因此發送的數據可以確保不會丟失、重復或亂序到達,而且它還有出錯后重新發送的機制(就像兩個人在打電話,聊天您一句我一句,有來有往,沒聽清楚就再說一次)。

數據報套接的類型是SOCK_DGRAM,它不需要建立和維持一個連接,采用UDP/IP協議實現。它對可以發送的數據的長度有限制,數據報作為一個單獨的網絡消息被傳輸,它可能會丟失、復制或錯亂到達,UDP不是一個可靠的協議,但是它的速度比較高,因為它不需要建立和維持連接(就像一個人向另一個人發短信,一條短信發出去,對方不一定能收到)。

在實際開發中,數據報套接字(即UDP)的應用場景極少,本章節只介紹流套接字。

三、socket通信的過程

1)服務端程序將一個套接字綁定到指定的ip地址和端口,并通過此套接字等待和監聽客戶的連接請求。

2)客戶程序向服務端程序綁定的地址和端口發出連接請求。

3)服務端接受連接請求。

4)客戶端和服務端通過讀寫套接字進行通信。


四、客戶/服務端模式

在TCP/IP網絡應用中,兩個程序之間通信模式是客戶/服務端模式(client/server),客戶/服務端也叫作客戶/服務器,各人習慣。

服務端的工作流程

1)創建服務端的socket。

2)把服務端用于通信的地址和端口綁定到socket上。

3)把socket設置為監聽模式。

4)接受客戶端的連接。

5)與客戶端通信,接收客戶端發過來的報文后,回復處理結果。

6)不斷的重復第5)步,直到客戶端斷開連接。

7)關閉socket,釋放資源。

服務端示例(book242.cpp)

/** 程序名:book242.cpp,此程序用于演示socket通信的服務端* 作者:C語言技術網(www.freecplus.net) 日期:20190525 */ #include <stdio.h> #include <string.h> #include <unistd.h> #include <netdb.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h>

總結

以上是生活随笔為你收集整理的转载:socket通信基础的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。