socket程式設計(1)
一、socket相關概念
socket作為程式通行機制,表示的是“插座”的意思,通常也被稱為“套接字”,用於描述IP地址和埠,用於兩個程式通訊使用。
舉個例子:
以電話網為例,電話的通話的雙方就相當於互相通訊的2個程式,電話號碼就是IP地址。在進行通話之前需要有一部手機,手機就相當於申請了一個socket,同時還要知道對方的號碼,相當於對方有一個固定的socket。向對方號碼進行撥號呼叫,相當於發出連線請求。
二、socket的兩種型別
1.流式socket
流式socket是一種面向連線的socket,針對於面向連線的TCP服務應用,安全,但是效率低.
1.1TCP三次握手
客戶端傳送訊息;
服務端回覆訊息
客戶端得到訊息
三次握手的目的是資料接收到以後進行響應,壞處就是效率太低。
2.資料包式socket
是一種無連線的socket,對應於無連線的UDP服務應用,不安全(丟失,順序混亂,在接收端要分析重排及要求重發),但是效率高
三、注意事項
在Internet上有很多這樣的主機,這些主機一般執行了多個服務軟體,同時提供幾種服務。每種服務都開啟一個socket,並且繫結到一個埠上,不同的埠對應於不同的服務(應用程式)
例如:http使用80埠,ftp使用21埠,smtp使用25埠
在連線的時候至少要定義一個要連線遠端主機的IP和埠號。
埠號必須在1到65535之間,最好在1024以後,一般使用50000以後的埠號。
要連線的遠端主機必須正在監聽指定埠,也就是說無法隨意連線遠端主機。
例如:
IPAddress addr=IPAddress.Parse(“127.0.0.1”);
IPEndPoint endp=new IPEndPoint(addr.10001);
服務端先繫結:serverWelcomeSocket.Bind(endp)
客戶端再連線:clientSocket.Connect(endp)
四、連線過程簡介
客戶端通過IP地址可以連到伺服器,再通過埠號可以連到需要的應用程式
客戶端和服務端都需要有socket。
伺服器首先需要有一個負責監聽的socket(),負責監聽自己的IP地址和埠號,看看是否有客戶端連線。當監聽到了以後,伺服器需要建立一個socket負責與客戶端進行通訊。
所以伺服器最少只有2個socket,一個負責監聽,一個負責通訊。而客戶端最少可以有一個socket。
1、服務端welcoming socket開始監聽埠(負責監聽使用者端連線資訊)
2、客戶端client socket連線服務端指定埠(負責接收和傳送服務端資訊)
3、服務端welcoming socket監聽到有客戶端連線,建立connection socket(負責和客戶端通過)
相關文章
- 【python socket程式設計】—— 1.初探Python程式設計
- SOCKET程式設計程式設計
- linux下TCP socket程式設計初步(1)LinuxTCP程式設計
- Java Socket程式設計Java程式設計
- Java Socket程式設計Java程式設計
- WCF、Socket程式設計程式設計
- Socket程式設計(九)程式設計
- Socket程式設計模型程式設計模型
- Python socket程式設計Python程式設計
- Socket程式設計基礎程式設計
- socket程式設計實戰程式設計
- Socket網路程式設計程式設計
- Socket 程式設計實戰程式設計
- IO和socket程式設計程式設計
- Java Socket 程式設計指南Java程式設計
- linux Socket 程式設計Linux程式設計
- 網路程式設計-socket程式設計
- 【socket程式設計基礎模板】程式設計
- golang中的socket程式設計Golang程式設計
- 網路程式設計之socket程式設計
- Socket 程式設計 (網路篇)程式設計
- Socket 程式設計IO Multiplexing程式設計
- PHP Socket 程式設計詳解PHP程式設計
- 【Python】socket 程式設計初探Python程式設計
- PHP回顧之socket程式設計PHP程式設計
- select函式socket程式設計函式程式設計
- python:socket網路程式設計Python程式設計
- 學習記錄|Socket程式設計程式設計
- 一文看懂socket程式設計程式設計
- Linux Socket 程式設計簡介Linux程式設計
- Python Socket 網路程式設計Python程式設計
- 【網路程式設計】socket詳解程式設計
- Java Socket 程式設計原理及教程Java程式設計
- Qt 中Socket程式設計例項QT程式設計
- socket程式設計的select模型程式設計模型
- android socket程式設計例項Android程式設計
- Python網路Socket程式設計Python程式設計
- java的socket程式設計問題Java程式設計