• Windows环境下进行socket编程


    • 编译环境
      操作系统 windows 10
      编译器 Dev-C++
    • 使用语言
      C语言

    在Dev中编译socket程序,需要设置编译环境,有以下两种方法:

    1. 新建project为win32 console,

      然后在project的属性linker里面添加库libws2_32.a

      如果没有添加动态库,则编译时会出现连接错误。

    2. 菜单 “工具”——>“编译选项”——>“编译器”选项卡——勾选“编译时加入以下命令”,添加命令:-lwsock32

    与Linux环境下socket编程相比,windows环境多了一个步骤:启动或者初始化winsock库

    Winsock,一种标准API,一种网络编程接口,用于两个或多个应用程序(或进程)之间通过网络进行数据通信。具有两个版本:

    Winsock 1:

    Windows CE平台支持。

    头文件:WinSock.h

    库:wsock32.lib

    Winsock 2:

    部分平台如Windows CE貌似不支持。通过前缀WSA可以区别于Winsock 1版本。个别函数如WSAStartup、WSACleanup、WSARecvEx、WSAGetLastError都属于Winsock 1.1规范的函数;

    头文件:WinSock2.h

    库:ws2_32.lib

    mswsock.h用于编程扩展,使用时必须链接mswsock.dll

    初始化

    首先确保包含对应版本的头文件,然后保证链接对应的库文件

    • (可以在代码中使用#pragma comment(lib, "WS2_32"),或在编译器项目属性中链接器->输入->附加依赖项中添加ws2_32.lib)

    winsock库的加载与卸载:

    加载:int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);

    加载成功,返回值为0。

    WORD wVersionRequested:加载的winsock版本,使用宏MAKEWORD(x, y),x表示高字节,y表示低字节。然而使用时MAKEWORD(2, 2)。高字节与低字节相同~~

    LPWSADATA lpWSAData:WSADATA结构的指针,传入参数后,系统帮助我们填充版本信息。有兴趣的可以看看结构体内容,不过基本用不着。

    卸载:int WSACleanup(void);比起加载,卸载的函数真是轻松愉快。

  • 相关阅读:
    kotlin的三目运算
    oracle存储过程相关整理
    LInux系统部署Java项目
    Idea集成vue
    java执行查询存储过程
    访问分享文件路径方法
    java计算程序运行时间
    IntelliJ IDEA 最新版 2019.1 安装与激活
    oracel中将子表中一个字段多条数据合并到主表的sql
    oracel根据条件不同,统计数据sql
  • 原文地址:https://www.cnblogs.com/zyever/p/9220210.html
Copyright © 2020-2023  润新知