- 4
- 0
- 约2.25万字
- 约 32页
- 2017-12-04 发布于江西
- 举报
Windows Socket 学习笔记
Windows Socket 学习笔记
Socket(套接字)先看定义:
typedef unsigned int u_int;
typedef u_int SOCKET;
Socket相当于进行网络通信两端的插座,只要对方的Socket和自己的Socket有通信联接,双方就可以发送和接收数据了。其定义类似于文件句柄的定义。Socket有五种不同的类型:1、流式套接字(stream socket)定义:
#define SOCK_STREAM 1?
流式套接字提供了双向、有序的、无重复的以及无记录边界的数据流服务,适合处理大量数据。它是面向联结的,必须建立数据传输链路,同时还必须对传输的数据进行验证,确保数据的准确性。因此,系统开销较大。2、 数据报套接字(datagram socket)定义:
#define SOCK_DGRAM 2?
数据报套接字也支持双向的数据流,但不保证传输数据的准确性,但保留了记录边界。由于数据报套接字是无联接的,例如广播时的联接,所以并不保证接收端是否正在侦听。数据报套接字传输效率比较高。3、原始套接字(raw-protocol interface)定义:
#define SOCK_RAW 3?
原始套接字保存了数据包中的完整IP头,前面两种套接字只能收到用户数据。因此可以通过原始套接字对数据进行分析。其它两种套接字不常用,这里就不介绍了。Socket开发所必须需要的文件(以WinSock V2.0为例):头文件:Winsock2.h库文件:WS2_32.LIB动态库:W32_32.DLL一些重要的定义1、数据类型的基本定义:这个大家一看就懂。
typedef unsigned char u_char;
typedef unsigned short u_short;
typedef unsigned int u_int;
typedef unsigned long u_long;
2、 网络地址的数据结构,有一个老的和一个新的的,请大家留意,如果想知道为什么,请发邮件给Bill Gate。其实就是计算机的IP地址,不过一般不用用点分开的IP地址,当然也提供一些转换函数。 旧的网络地址结构的定义,为一个4字节的联合:
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
struct { u_short s_w1,s_w2; } S_un_w;
u_long S_addr;
} S_un;
#define s_addr S_un.S_addr /* can be used for most tcp ip code */
//下面几行省略,反正没什么用处。
};
其实完全不用这么麻烦,请看下面: 新的网络地址结构的定义:非常简单,就是一个无符号长整数 unsigned long。举个例子:IP地址为的网络地址是什么呢?请看定义:
#define INADDR_LOOPBACK 0x7f000001
3、 套接字地址结构(1)、sockaddr结构:
struct sockaddr {
u_short sa_family; /* address family */
char sa_data[14]; /* up to 14 bytes of direct address */
};
sa_family为网络地址类型,一般为AF_INET,表示该socket在Internet域中进行通信,该地址结构随选择的协议的不同而变化,因此一般情况下另一个与该地址结构大小相同的sockaddr_in结构更为常用,sockaddr_in结构用来标识TCP/IP协议下的地址。换句话说,这个结构是通用socket地址结构,而下面的sockaddr_in是专门针对Internet域的socket地址结构。(2)、sockaddr_in结构
struct sockaddr_in {
short sin_family;
u_short sin_port;
struct in_addr sin_addr;
char sin_zero[8];
};
sin _family为网络地址类型,必须设定为AF_INET。sin_port为服务端口,注意不要使用已固定的服务端口,如HTTP的端口80等。如果端口设置为0,则系统会自动分配一个唯一端口。sin_addr为一个unsigned long的IP地址。sin_zero为填充字段,纯粹用来保证结构的大小。 将常用的用点分开的IP地址转换为unsigned long类型的IP地址的函数:
unsigned long i
您可能关注的文档
- TST数字交换网络设计.doc
- TripAdvisor是全球最大的旅行者社区wuhao.ppt
- TSPL中文文档.doc
- TTE-CMC员工健康指南.ppt
- TTT-讲师培训.ppt
- TurboCRM技术FAQ.doc
- tuxedo在LINUX下的安装笔记.doc
- TRIZ基本概念.ppt
- TTT培训游戏汇总.docx
- T_SQL语言.ppt
- 2025-2026学年天津市和平区高三(上)期末数学试卷(含解析).pdf
- 2025-2026学年云南省楚雄州高三(上)期末数学试卷(含答案).pdf
- 2025-2026学年甘肃省天水市张家川实验中学高三(上)期末数学试卷(含答案).docx
- 2025-2026学年福建省厦门市松柏中学高二(上)期末数学试卷(含答案).docx
- 2025-2026学年广西钦州市高一(上)期末物理试卷(含答案).docx
- 2025-2026学年河北省邯郸市临漳县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省石家庄二十三中七年级(上)期末历史试卷(含答案).docx
- 2025-2026学年海南省五指山市九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省唐山市玉田县九年级(上)期末化学试卷(含答案).docx
- 2025-2026学年河北省邢台市市区九年级(上)期末化学试卷(含答案).docx
最近下载
- 2022届上海市徐汇区高三上学期12月一模英语试卷-Word版含答案.doc VIP
- (完整版)Aitken拖延问卷(API).docx VIP
- MTU软件简易操作培训课件32.pdf VIP
- 2026年春统编版九年级下册语文教学计划及教学进度表.docx VIP
- 学校“最小应急单元”突发事件处置工作指引解读课件.pptx VIP
- 深圳大学《现代通信原理》2021-2022学年第一学期期末试卷.doc VIP
- 人教版八年级数学下册教学工作计划与教学进度表(2026春季学期).docx
- 07CJ03-1:轻钢龙骨石膏板隔墙、吊顶(参考图集).pdf VIP
- 赤壁赋教学实录与课堂案例分析.docx VIP
- 化工工艺培训PPT课件.pptx VIP
原创力文档

文档评论(0)