写聊天室之前 了解聊天室拓展出来的各种知识点
TCP:并發服務器 效率最高 多線程
UDP:循環服務器 不需要listen accept connect
Select(多路復用): 循環服務器
?
網絡編程注意點:
TCP/IP 四層模型 { 應用層,傳輸層,網絡層,網絡接口層 }
背三次握手四次揮手
DHCP協議是什么?
?
套接字 有三種:
?
服務器有什么?
QQ/微信/SKAPE)
?
Bind / accept 等的第二個參數 需要加強制轉換類型
第二個參數 的結構原型:
Struct sockaddr
{
U_short sa_family; //地址族協議
Char sa_data[14]; //存放ip 與 端口號
};
?
有關端口號: 1-65535 (x shell 中 connecting to 192.168.128.91 ?: ?22這里的22就是端口號)
1-1023 一般不用 被各種協議 占用了
(1)知名端口(Well-Known Ports)
知名端口即眾所周知的端口號,范圍從0到1023,這些端口號一般固定分配給一些服務。比如21端口分配給FTP服務,25端口分配給SMTP(簡單郵件傳輸協議)服務,80端口分配給HTTP服務,135端口分配給RPC(遠程過程調用)服務等等。
(2)動態端口(Dynamic Ports)
動態端口的范圍從1024到65535,這些端口號一般不固定分配給某個服務,也就是說許多服務都可以使用這些端口。只要運行的程序向系統提出訪問網絡的申請,那么系統就可以從這些端口號中分配一個供該程序使用。比如1024端口就是分配給第一個向系統發出申請的程序。在關閉程序進程后,就會釋放所占用的端口號。
?
然后 這個結構慢慢演變了
Struct sockadddr_in
{
Short int sin_family; //internet 地址族
Unsigned short sin_port; //端口號 (自己要指定)
Struct in_addr sin_addr; //IP地址
Unsigned char sin_zero[8]; //填0
};
?
這里就又涉及到一個知識點:大小端的轉換
內存中分為 高地址 和 低地址
而數據又有 高字節 和 低字節
大端:高字節存放在低地址中
小端:低字節存放在低地址中
一般
小端:主機的字節序
大端:網絡的字節序
(遇到相關問題和題目 注意平臺與電腦鍵的轉換)
?
有關大小端的轉換:
Int ?a ?= ?1;
A & 0x000000ff << 24 ?|
A & 0x0000ff00 << 8 ??|
A & 0x00ff0000 >> 8 ??|
A & 0xff000000 >>24
將A的左右移位完成大小端的轉化
?
Htonl:(在#include <arpa/inet.h> 頭文件中)
H:host 主機
To:
N:網絡
L:兩個字節 32位
S:一個字節 16位
?
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的写聊天室之前 了解聊天室拓展出来的各种知识点的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 补8-5日复习内容 STL 标准模板库的
- 下一篇: 8-7复习 stl常用算法