Windows网络编程基础知识
2015-04-15 10:06
387 查看
1.WinSock的初始化
2.错误检查和处理
3.
sin_family必须是AF_INET,作用是告知WinSock使用的是IP地址族
sin_zero[8]只充当填充项,使SOCKADDR_IN和SOCKADDR结构长度一样.SOCKADDR是一个通用的套接字地址,作用相当于void*。
字节排序
不同计算机处理器可能采用big-endian或little-endian形式进行编码。Internet联网标准指定多字节值必须用big-endian形式表示,一般称之为网络字节顺序。
下面4个常用API函数便将一个数从主机字节顺序转换为网络字节顺序:
反之
另一个常用的函数将点分IP地址转换为4字节整数
srvAddr.sin_addr.S_un.S_addr = inet_addr(“127.0.0.1”);
INADDR_ANY代表所有发送到服务器的这个端口,不管是哪个网卡 / 哪个IP地址接收到的数据,都交给这个套接字处理。
#include<iostream> #include<WinSock2.h> #include<MSWSock.h> #pragma comment(lib, "WS2_32.lib")//使用WinSock2.h时,须加载此项 using namespace std; //Winsock2函数带有WSA前缀,除了WSAStartup WSACleanup WSARecvEX WSAGetLastError int main() { WSADATA wsData; if (SOCKET_ERROR == WSAStartup(MAKEWORD(2, 2), &wsData))//第一个2是次版本号 { cout << "初始化错误!" << endl; } cout << "主版本号:" << (int)LOBYTE(wsData.wHighVersion) << endl;//所能支持的最高版本信息 cout << "次版本号" << (int)HIBYTE(wsData.wHighVersion) << endl; WSACleanup(); system("pause"); return -1; }
2.错误检查和处理
WSAGetLastError WSASetLastError手动设置错误代码
3.
typedef struct sockaddr_in { ADDRESS_FAMILY sin_family; USHORT sin_port; IN_ADDR sin_addr; CHAR sin_zero[8]; } SOCKADDR_IN, *PSOCKADDR_IN;
sin_family必须是AF_INET,作用是告知WinSock使用的是IP地址族
sin_zero[8]只充当填充项,使SOCKADDR_IN和SOCKADDR结构长度一样.SOCKADDR是一个通用的套接字地址,作用相当于void*。
字节排序
不同计算机处理器可能采用big-endian或little-endian形式进行编码。Internet联网标准指定多字节值必须用big-endian形式表示,一般称之为网络字节顺序。
下面4个常用API函数便将一个数从主机字节顺序转换为网络字节顺序:
WSAHtonl//4字节 htonl WSAHtons//2字节 htons
反之
WSANtohl ntohl WSANtohs ntohs
另一个常用的函数将点分IP地址转换为4字节整数
srvAddr.sin_addr.S_un.S_addr = inet_addr(“127.0.0.1”);
SOCKADDR_IN srvAddr; srvAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY); srvAddr.sin_family = AF_INET; srvAddr.sin_port = htons(DefaultPort);
INADDR_ANY代表所有发送到服务器的这个端口,不管是哪个网卡 / 哪个IP地址接收到的数据,都交给这个套接字处理。
相关文章推荐
- Windows网络编程基础知识
- windows网络编程之重叠模型(OVERLAPPED I/O)基础知识
- Java基础知识强化之网络编程笔记18:Android网络通信之 使用HttpClient的Post / Get 方式读取网络数据(基于HTTP通信技术)
- Java基础知识网络编程(浏览器&服务端)
- java第九节 网络编程的基础知识
- python网络编程基础(1)ip、端口等基础知识
- Java基础知识强化之网络编程笔记06:TCP之TCP协议发送数据 和 接收数据
- Windows编程基础知识点
- 网络编程入门基础知识(1)
- Java中网络编程基础知识(一)
- JAVA基础知识之网络编程——-基于UDP协议的通信例子
- JAVA基础知识之网络编程——-使用MutilcastSocket实现多点广播
- Java网络编程:基础知识
- socket网络编程的一些基础知识
- 黑马程序员---java基础知识(十):网络编程
- Java 网络编程 学习笔记一 基础知识
- 网络编程基础知识
- 黑马程序员———网络编程基础知识
- java网络编程基础知识
- 网络编程基础知识