socket編程學習-------套接字概述

前段時間學習了一下套接字編程,這裏先簡單介紹一下關於套接字python

1.什麼是套接字編程:編程

源IP地址和目的IP地址以及源端口號和目的端口號的組合稱爲套接字。其用於標識客戶端請求的服務器和服務。服務器

  • 網絡化網絡化的應用程序在開始任何通信以前都必需要建立套接字,沒有它就徹底沒辦法通信
  • 一開始,套接字被設計用在同一臺主機上多個應用程序之間的通信,這也叫進程間通信,或IPC
  • 套接字有兩種,分別是基於文件型的和基於網絡型的
  • AF_UNIX表示」地址家族:UNIX」 –>基於文件的AF_INET表示」地址家族:Internet」–>基於網絡的
  • python只支持AF_INET、AF_UNIX、AF_NETLINK家族

2.基於TCP套接字編程網絡

基於 TCP 的套接字編程的全部客戶端和服務器端都是從調用socket 開始,它返回一個套接字描述符。客戶端隨後調用connect 函數,服務器端則調用 bind、listen 和accept 函數。socket

3.套接字基本原理函數

在網絡中最經常使用的通訊模式是客戶機/服務器模式(Client/Server模式或C/S模式)。學習

服務器方要先啓動,並監聽指定端口,等待客戶端的請求,根據客戶端的請求提供相應服務。spa

通常來講,要進行網絡通訊,必需要在網絡的每一端都要創建一個套接字,兩個套接字之間是能夠創建鏈接的,也是能夠無鏈接的,並經過對套接字的「讀」、「寫」操做實現網絡通訊功能。相似於文件的打開、讀、寫、關閉的方式。設計

4.與套接字相關的系統調用:blog

  • socket---建立一個套接字
  • close---銷燬一個套接字
  • connect--在兩個套接字之間創建鏈接
  • bind---將一個服務器套接字綁定一個地址
  • listen---設置一個套接字爲接受鏈接狀態
  • accept---接受一個鏈接請求併爲新建的鏈接建立一個新的套接字

==== ==當你建立一個套接字的時候,須要指明三種選項:命名空間,通訊類型和協議=====

5.服務器端程序:

  • 加載套接字庫
  • 建立套接字(socket)
  • 將套接字綁定到一個本地地址端口上(bind)
  • 將套接字設爲監聽模式,準備接收客戶請求(listen)
  • 等待客戶請求到來,請求到來後,接受鏈接請求,返回一個新的對應這次鏈接的套接字(accept)
  • 用返回的套接字和客戶端進行通訊(send/recv)
  • 返回,等待另外一客戶請求
  • 關閉套接字

6.客戶端程序:

  • 加載套接字庫
  • 建立套接字(socket)
  • 向服務器發出鏈接請求(connect)
  • 和服務器進行通訊(send/recv)
  • 關閉套接字(close)

 

下面來一張圖形象生動一下

相關文章
相關標籤/搜索