1、加载和释放Winsoke库
//所有Winsock函数都是从WS2_32.DLL导出,包含相应库文件
#include <winsock2.h>
#pragma comment(lib, "WS2_32")
//若没有加载,调用scok函数返回的SOCKET_ERROR出错代码为WSANOTINITIALISED
int WSAStartup(
WORD wVersionRequested, //指定要加载的Winsock库版本,高字节次版本, 低字节主版本号,使用MAKEWORD(x, y)
LPWSADATA lWSAData //一个指向WSADATA结构的指针,用来返回DLL库的详细信息
);
typedef struct WSAData {
WORD wVersion; //库文件建议应用程序使用的版本
WORD wHighVersion; //库文件支持的最高版本
char szDescription[WSADESCRIPTION_LEN+];//库描述字符串
char szSystemStatus[WSASYS_STATUS_LEN+];//系统状态字符串
unsigned short iMaxSockets; //同时支持的最大套接字数量
unsigned short iMaxUdpDg; //废弃
char FAR * lpVendorInfo; //废弃
} WSADATA, FAR * LPWSADATA;
//成功返回0,否则要调用WSAGetLastError函数查看原因
int WSACleanup(void)
  简单封装
class CInitSock
{
public:
CInitSock(BYTE minorVer = , BYTE majorVer = )
{ //初始化WS2_32.DLL
WSAADATA wsaData;
WORD sockVersion = MAKEWORD(minorVer, majorVer);
if(::WSAStartup(sockVersion, &wsaData) != )
exit();
}
~CInitSock()
{
::WSACleanup();
}
}
Winsock寻址和字节顺序

//版本1使用sockaddr兼容
struct sockaddr {
u_short sa_family; /* address family */
char sa_data[]; /* up to 14 bytes of direct address */
};
//我们一般使用TCP/IP,所以上面的TCP/IP版本为
struct sockaddr_in {
short sin_family;  //地址族(即指定地址格式),AF_INET(IP地址)
u_short sin_port;   //端口号(不要使用0-1023以免影响公共服务)
struct in_addr sin_addr; //IP地址(32位)
char sin_zero[]; //空字节, 设为0, 为了与sockaddr兼容
};
//IP地址 in_addr结构
struct in_addr {
union {
struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b; //4个u_char描述
struct { u_short s_w1,s_w2; } S_un_w; //2个u_short描述
u_long S_addr; //1个u_long描述
} S_un; //IP地址函数
unsigned long inet_addr(const char *cp) //将点分十进制IP地址字符串转换为32位二进制表示IP地址,二进制数按网络顺序存储
char* inet_ntoa(struct in_addr) //将32位二进制数转换为字符 //网络字节顺序为大端顺序(高字节低位), Intel为小端顺序(高字节高位)
u_short htons(u_short hostshort) //主机顺序转网络字节顺序
u_long htonl(u_long hostlong) //
u_short ntohs(u_short hostshort) //网络字节顺序转主机顺序
u_long ntohl(u_long hostlong)
  初始化sockaddr_in

sockaddr_in sockAddr;
sockAddr.sin_family = AF_INET;
sockAddr.sin_port = htons();
sockAddr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1");
//或使用下列初始化IP地址
sockAddr.sin_addr.S_un.S_un_b.s_b1 = ;
sockAddr.sin_addr.S_un.S_un_b.s_b2 = ;
sockAddr.sin_addr.S_un.S_un_b.s_b3 = ;
sockAddr.sin_addr.S_un.S_un_b.s_b4 = ;
 
 
 
 
 
 
 

Winsock编程基础1的更多相关文章

  1. Winsock编程基础介绍 .

    相信很多人都对网络编程感兴趣,下面我们就来介绍,在网络编程中应用最广泛的编程接口Winsock API. 使用Winsock API的编程,应该了解一些TCP/IP的基础知识.虽然你可以直接使用Win ...

  2. Winsock编程基础2(Winsock编程流程)

    1.套接字的创建和关闭 //创建套接字 SOCKET socket( int af, //指定套接字使用的地址格式,Winsock只支持AF_INET int type, //套接字类型 int pr ...

  3. WinSock编程基础

    一.套接字模式   1.阻塞模式       创建套接字时,默认是阻塞模式,对recv函数调用会使程序进入等待状态,知道接收到数据才返回.   2.非阻塞模式:      可以调用ioctlsocke ...

  4. Winsock编程基础2(UDP流程)

    UDP用户数据报协议 服务器端 <1 创建套接字(socket) <2 绑定IP地址和端口(bind) <3 收发数据(sendto, recvfrom) <4 关闭连接(cl ...

  5. windows socket网络编程基础知识

    下面介绍网络7层协议在WINDOWS的实现: 7层协议 WIN系统 ________________________________________ 7 应用层 7 应用程序 ____________ ...

  6. 【网络编程1】网络编程基础-TCP、UDP编程

    网络基础知识 网络模型知识 OSI七层模型:(Open Systems Interconnection Reference Model)开放式通信系统互联参考模型,是国际标准化组织(ISO)提出的一个 ...

  7. 第二章 Matlab面向对象编程基础

    DeepLab是一款基于Matlab面向对象编程的深度学习工具箱,所以了解Matlab面向对象编程的特点是必要的.笔者在做Matlab面向对象编程的时候发现无论是互联网上还是书店里卖的各式Matlab ...

  8. [.net 面向对象编程基础] (1) 开篇

    [.net 面向对象编程基础] (1)开篇 使用.net进行面向对象编程也有好长一段时间了,整天都忙于赶项目,完成项目任务之中.最近偶有闲暇,看了项目组中的同学写的代码,感慨颇深.感觉除了定义个类,就 ...

  9. Android开发4: Notification编程基础、Broadcast的使用及其静态注册、动态注册方式

    前言 啦啦啦~(博主每次开篇都要卖个萌,大家是不是都厌倦了呢~) 本篇博文希望帮助大家掌握 Broadcast 编程基础,实现动态注册 Broadcast 和静态注册 Broadcast 的方式以及学 ...

随机推荐

  1. jmeter知识总结(一)

    Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件.相比Loadrunner而言,JMeter小巧轻便且免费,逐渐成为了主流的性能测试工具,是每个测试人员都必须要掌握的工 ...

  2. Asp.Net Core 项目搭建基础

    很多新接触ASP.NET Core 技术的同学可能会对项目运行机制不了解,会碰到服务在哪添加?路由在哪配置?中间件怎么使用?依赖注入在哪写?诸如此类的问题.同样作为初学者,以下是本人在学习.Net技术 ...

  3. vue.js遍历ajax请求的数据

    <div id="dv" style="text-align: center;"><div class="head input-gr ...

  4. 强大而灵活的的Html解析器——Html Agility Pack

    一.概述 Html Agility Pack 简称HAP,是一个强大而灵活的解析Html DOM的.Net类库. 二.官方链接 官网:http://html-agility-pack.net/ NuG ...

  5. 杂记:腾讯暑期实习 Web 后端开发面试经历

    今天面试(一面)腾讯暑期实习 Web 后端开发,一言难尽. 第一部分,常规的自我介绍. 介绍完,面试官问我对人工智能有什么理解?深度学习和机器学习的区别?对调参有什么见解?语音识别中怎样运用了机器学习 ...

  6. Invitation Cards spfa

    题意  n个点m条单向边   计算 从1到每一个点的权值(除了1) 和每个点回到1 的权值之和 正向跑一次 反向跑一次即可 #include<bits/stdc++.h> using na ...

  7. MySQL 如何使用左链接代替 NOT IN

    核心思想 通过左链接 查询出要排除的数据 然后和主表进行匹配 拿去未匹配到的数据 可以使用 IS NULL 来过滤掉 案例稍后 更新 select * from a left join on a.id ...

  8. SpringCloud使用Sofa-lookout监控(基于Eureka)

    本文介绍SpringCloud使用Sofa-lookout,基于Eureka服务发现. 1.前景 本文属于是前几篇文章的后续,其实一开始感觉这个没有什么必要写的,但是最近一个朋友问我关于这个的问题,所 ...

  9. jQuery AJAX相关方法

    接jQuery学习上篇.因为AJAX是相对独立的一块,所以和jQuery的随笔分开记录了.素材同样来自runoob. 先了解下什么是AJAX. AJAX = 异步 JavaScript 和 XML(A ...

  10. 小马哥STM32课程系列

    小马哥STM32课程系列 http://www.moore8.com/courses/1308