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......餘下全文>>