socket編程之一:電腦網路基礎,

來源:互聯網
上載者:User

socket編程之一:電腦網路基礎,

在開始學習網路之前先複習下電腦網路基礎吧。

魯迅說,天下文章一大抄,看你會炒不會炒,基礎知識就抄抄書吧。


一 分層模型

1 為什麼分層

為了簡化網路設計的複雜性,通訊協議採用分層結構,各層協議之間既相互獨立又相互高效的協調工作。

對於複雜的通訊協定,其結構應該是採用層次的。分層的協議可以帶來很多便利:
分層的好處有:

a> 靈活性好:當任何一層發生變化時,只要層間介面關係保持不變,則在這層以上或以下各層均不受影響。

此外,對某一層提供的服務還可進行修改。當某層提供的服務不再需要時,甚至可以將這層取消,更容易管理。

b> 各層之間是獨立的:在各層間標準化介面,允許不同的產品只提供各層功能的一部分,某一層不需要知道它的下一層是如何?的,

而僅僅需要知道該層通過層間的介面所提供的服務。由於每一層只實現一種相對獨立的功能,所以比較容易實現!


2 分層

標準七層結構和實用五層結構


socket具體對應那的應該是運輸層和網路層。


二 socket簡介

socket即通訊端。最原始的socket是繼承unix系統中,後來微軟推出了winsocket。

socket編程會中涉及到一些地址,連接埠,位元組序等概念,最好是瞭解下。

這裡就直接說socket建立串連的過程了,



大致分為三個大的步驟:

1 服務端監聽

2 用戶端請求串連

3 串連確認


下一節在詳細的說具體的串連步驟吧。




我是C++程式員,想學習一下socket網路編程,可以不可以推薦一本書,C++,socket

最基本的做起,找一個能啟動並執行例子,用戶端和伺服器都要有。先在你機子上運行一下,如果ok就一步步查函數,一直到自己能不看任何東西寫出來。接下來就可以看網路上別人寫的更深的東西,那些很花哨的東西就是錦上添花,架構搭好了其他的很快就會了。給你最今本的windows下的socket編程。但是我得說的是實際工作中伺服器基本上都說UNIX的。不過基本的函數都是大同小異的。yunpan.cn/Qt6NnzMN4jGNQ
 
socket網路編程,寫一個Helloworld程式

/*分別編譯client.c server.c*/

/*use*/
/*1.先運行server*/
/*D:\>client /? */
/*2. D:\>client -p:5150 -s:192.168.99.77 -n:5 */

/*server.c*/
// Module Name: Server.c
//
// Description:
// This example illustrates a simple TCP server that accepts
// incoming client connections. Once a client connection is
// established, a thread is spawned to read data from the
// client and echo it back (if the echo option is not
// disabled).
//
// Compile:
// cl -o Server Server.c ws2_32.lib
//
// Command line options:
// server [-p:x] [-i:IP] [-o]
// -p:x Port number to listen on
// -i:str Interface to listen on
// -o Receive only, don't echo the data back
//
#include <winsock2.h>

#include <stdio.h>
#include <stdlib.h>
#pragma comment (lib,"ws2_32.lib")
#define DEFAULT_PORT 5150
#define DEFAULT_BUFFER 4096

int iPort = DEFAULT_PORT; // Port to listen for clients on
BOOL bInterface = FALSE, // Listen on the specified interface
bRecvOnly = FALSE; // Receive data only; don't echo back
char szAddress[128]; // Interface to listen for clients on

//
// Function: usage
//
// Description:
// Print usage information and exit
//
void usage()
{
pr......餘下全文>>
 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.