WINSOCK网络函数
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网络函数的更多相关文章
- delphi 网络函数
Delphi网络函数 unit net; interfaceusessysutils,windows,dialogs,winsock,classes,comobj,wininet; //得到本机的局域 ...
- delphi网络函数大全
{=========================================================================功 能: 网络函数库时 间: 2002/10/02版 ...
- VB6+Winsock编写的websocket服务端
早就写好了,看这方面资料比较少,索性贴出来.只是一个DEMO中的,没有做优化,代码比较草.由于没地方上传附件,所以只把一些主要的代码贴出来. 这只是服务端,不过客户端可以反推出来,其实了解了webso ...
- [转]VB Winsock 控件TCP与UDP连接实例
[-] 可能的用途 选择通讯协议 协议的设置 确定计算机的名称 TCP 连接初步 接受多个连接请求 UDP 初步 关于 Bind 方法 利用 WinSock 控件可以与远程计算机建立连接,并通过用 ...
- NetBIOS与Winsock编程接口
最近在看网络编程方面的书,由于不是通信专业出身的,以前理解的网络体系感觉就是tcp/ip,最近工作上接触到了一些光环网等乱七八糟的东西,有些基本的LC.SC连接器都不认识.花时间看了下计算机网络体系结 ...
- Winsock 入门 Echo 示例
#include <stdio.h> #include <winsock2.h> #pragma comment(lib, "ws2_32") /* Win ...
- 影响 PHP 行为的扩展和网络函数
<?php /* * * 影响 PHP 行为的扩展 * PHP 选项和信息 * * assert_options — 设置/获取断言的各种标志 assert — 检查一个断言是否为 FALSE ...
- winsock教程- windows下的socket编程(c语言实现)
winsock教程- windows下的socket编程(c语言实现) 使用winsock进行socket 编程 这是一个学习windows下socket编程(c语言)的快速指南.这是因为一下 ...
- 在VBA中调用winsock控件
如果系统没有Winsock控件的话,可以下载下面的控件MSWINSCK.OCX,然后将该文件复制到C:\Windows\System32目录下. 在VBE窗口中,从菜单"工具"-& ...
随机推荐
- Devexpres下LookUpEdit绑定数据后会默认弹出数据框的解决办法
LookUpEdit绑定数据后会默认弹出数据框很不友好问题现象: 问题解决前的代码: lueManagement.Text = groupEntity.Name; 2 lueManagement.Ed ...
- 峰Spring4学习(6)spring AOP的应用例子
一.AOP简介: 二.AOP实例: 三.使用的例子 需求:在student添加的前后,打印日志信息: 0)spring AOP需要引用的jar包: 1)StudentService.java接口: p ...
- Python普通方法、静态方法、类方法
开始 # -*-coding:utf-8-*- # 普通方法,类方法,静态方法的区别 __metaclass__ = type class Tst: name = 'tst' data = 'this ...
- C#如何优雅的结束一个线程
大家都知道在C#里面,我们可以使用 Thread.Start方法来启动一个线程,当我们想停止执行的线程时可以使用Thread.Abort方法来强制停止正在执行的线程,但是请注意,你确定调用了Threa ...
- jQuery操作table tr td
1.鼠标移动行变色 $("#tab tr").hover(function(){ $(this).children("td").addClass("h ...
- Django学习---Form组件认证
Form组件认证 能够帮助我们做用户认证. 以前写我们自己写用户认证的时候,我们自己写HTML的form表单,点击提交,数据就被发送到后台,后台进行验证.在验证过程中我们就需要自己去写正则表达式去匹配 ...
- xsigo systems
继虚拟化管理软件巨头VMware以12.6亿美元收购云计算网络虚拟化厂商Nicira后,昨日,有报道称,甲骨文也不甘示弱,宣布收购了另一家网络虚拟化技术厂商Xsigo,为这股SDN(软件定义网络)热潮 ...
- segment_object_model_3d
* *********************************************************************** * This example program sho ...
- Linux进程之Fork函数
Fork()函数 1.所需头文件: #include <unistd.h> #include<sys/types.h> 2.函数定义 pid_t fork( void ); p ...
- indexes和indices的区别
indexes和indices的区别是: indexes在美国.加拿大等国的英语里比较常见.但indices盛行于除北美国家以外的英语里. indices一般在数学,金融和相关领域使用,而indexe ...