1. 头文件及库文件

头文件:WINSOCK2.H

库:WS2_32.LIB库

如果是在WINCE中,不支持SOCK2,所以:

头文件:WINSOCK.H

库:WSOCK32.LIB

如果从MSWSOCK.H中使用了扩展API,则需要链接MSWSOCK.DLL

2. 初始化Winsock

如果调用一个没有初始化过winsock库的相关socket函数,则返回SOCKET_ERROR,另外错误信息是:WSANOTINITIALISED;

int WSAStartup(WORD wVersionRequeted, LPWSADATA lpWSAData);

l wVersionRequested:指定加载的winsock库的版本;

l lpWSAData:指向LPWSADATA结构的指针,填充启动参数;

3. 错误检测

常见的错误返回值时SOCKET_ERROR,该值是-1;

若想获取具体错误信息,通过函数:

int WSAGetLastError(void);

当然,必须在winsock加载之后,才能调用该函数,如果在WSAStartup就出错,那就没得办法了。

4. 创建套接字

SOCKET socket(int af, int type, int protocol);

5. 面向连接的通信

绑定套接字:

int bind(SOCKET s, const struct sockaddr FAR* name, int namelen);

监听:

int listen(SOCKET s, int backlog);

接受连接:

SOCKET accept(SOCKET s,struct sockaddr FAR* addr, int FAR* addrlen);

连接:

int connect(SOCKET s, const struct sockaddr FAR* name, int namelen);

6. 数据传输

数据发送:

int send(SOCKET s, const char FAR* buf, int len, int flags);

接收数据:

int recv(SOCKET s, char FAR* buf, int len, int flags);

7. 中断连接

为了保证通信方能够收到应用程序发出的所有数据,对于一个好的应用程序来说,应该通知接收端“不再发送数据”。同样,通信方也该如此。

int shutdown(SOCKET s, int how);

从容关闭,可以选择关闭项类型:SD_RECEIVE、SD_SEND、SD_BOTH;

直接关闭套接字:

int closesocket(SOCKET s);

8. 无连接通信

和面向连接不同,不必调用listen和accept,最简单的方式就是:

int recvfrom(SOCKET s, char FAR* buf, int len, int flags, struct sockaddr FAR* from, int FAR* fromlen);

而客户端则直接发送数据:

int sendto(SOCKET s, const char FAR* buf, int len, int flags, const struct sockaddr FAR* to, int tolen);

WINSOCK网络函数的更多相关文章

  1. delphi 网络函数

    Delphi网络函数 unit net; interfaceusessysutils,windows,dialogs,winsock,classes,comobj,wininet; //得到本机的局域 ...

  2. delphi网络函数大全

    {=========================================================================功 能: 网络函数库时 间: 2002/10/02版 ...

  3. VB6+Winsock编写的websocket服务端

    早就写好了,看这方面资料比较少,索性贴出来.只是一个DEMO中的,没有做优化,代码比较草.由于没地方上传附件,所以只把一些主要的代码贴出来. 这只是服务端,不过客户端可以反推出来,其实了解了webso ...

  4. [转]VB Winsock 控件TCP与UDP连接实例

    [-] 可能的用途 选择通讯协议 协议的设置 确定计算机的名称 TCP 连接初步 接受多个连接请求 UDP 初步 关于 Bind 方法   利用 WinSock 控件可以与远程计算机建立连接,并通过用 ...

  5. NetBIOS与Winsock编程接口

    最近在看网络编程方面的书,由于不是通信专业出身的,以前理解的网络体系感觉就是tcp/ip,最近工作上接触到了一些光环网等乱七八糟的东西,有些基本的LC.SC连接器都不认识.花时间看了下计算机网络体系结 ...

  6. Winsock 入门 Echo 示例

    #include <stdio.h> #include <winsock2.h> #pragma comment(lib, "ws2_32") /* Win ...

  7. 影响 PHP 行为的扩展和网络函数

    <?php /* * * 影响 PHP 行为的扩展 * PHP 选项和信息 * * assert_options — 设置/获取断言的各种标志 assert — 检查一个断言是否为 FALSE ...

  8. winsock教程- windows下的socket编程(c语言实现)

    winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程     这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...

  9. 在VBA中调用winsock控件

    如果系统没有Winsock控件的话,可以下载下面的控件MSWINSCK.OCX,然后将该文件复制到C:\Windows\System32目录下. 在VBE窗口中,从菜单"工具"-& ...

随机推荐

  1. 智能家居入门DIY——【一、ESP8266之软串口HTTP请求】

    前段时间做了一个激光雕刻,玩的不亦乐乎.对Arduino大感兴趣,于是又入手一块20大洋版,配上买学习套件时的诸多零件——红外发射管.一体化红外接收头.DHT11温湿度传感器.ESP8266等,以及某 ...

  2. css3中的相关单位

    引用地址 :http://blog.csdn.net/jyy_12/article/details/42557241

  3. c端用户体系实现方案

    问题: 同个用户的来源 有微信,脸书,浏览器 怎么鉴定他们为同一个人呢? 解决: 数据库2张表 c_user表 记录c端用户 信息 记录 唯一uuid ,平台来源 手机号码 浏览器进来是匿名用户 无手 ...

  4. mysql-13处理重复数据

    1.防止表中出现重复数据 在mysql数据表中设置指定的字段为主键或唯一索引来保证数据的唯一行. -- 方法1:指定主键 create `table person_tbl`( `first_name` ...

  5. 关于Android App开发知识体系的一个小总结

     前言 本文从热更新.异步并发.性能优化.网络请求等多个方面对Android App开发的知识体系进行了一个分类总结.欢迎大家沟通交流. 热更新 [原]热更新开源项目Tinker源码解析之Dex热更新 ...

  6. CentOS 上使用vscode 调试百度大数据分析框架Apache Doris BE

    A: 前期准备工作 1. 安装vscode,详细请参见vscode官网https://code.visualstudio.com/docs/setup/linux,摘要如下: sudo rpm --i ...

  7. 客户端调用wcf服务,如何提高调用性能

    IO调用服务 1.使用using(每次自动释放) ; i < ; i++) { var watch = new Stopwatch(); watch.Start(); using (var cl ...

  8. Synergy使用(安装及配置)

    最近在看一篇文章,找到了一款符合我需求的软件:Synergy. Synergy可以在多台电脑上进行鼠标与键盘及剪贴板(只能共享文本)的共享.不用每台电脑都插上这些外设了... 共享文件可以参看微软出品 ...

  9. MPI 并行奇偶交换排序 + 集合通信函数 Sendrecv() Sendvecv_replace()

    ▶ <并行程序设计导论>第三章的例子程序 ● 代码 #include <stdio.h> #include <mpi.h> #include <stdlib. ...

  10. C# DataTable添加行和列

    方法一: DataTable tblDatas = new DataTable("Datas"); DataColumn dc = null; dc = tblDatas.Colu ...