码迷,mamicode.com
首页 > Windows程序 > 详细

windows下socket编程小例子

时间:2016-11-19 03:34:30      阅读:214      评论:0      收藏:0      [点我收藏+]

标签:支持   sock   size   客户端   结构体   raw   允许   文件描述符   多少   

服务端

    1. 首先引进头文件winsock2.h和库文件ws2_32.lib(开发环境为vs2015)
    2. 加载套接字库和创建套接字    
    3. 绑定套接字到一个IP地址和端口上
    4. 监听客户端发来的连接请求
    5. 接收或发送信息
    6. 关闭套接字,套接字库

客户端

    1. 首先引进头文件winsock2.h和库文件ws2_32.lib(开发环境为vs2015)
    2. 加载套接字库,创建套接字对象
    3. 向服务端发出连接请求
    4. 收发信息
    5. 关闭套接字和套接字库

注释

WSAStartup结构体中主要包含了系统所支持的Winsock版本信息

WSAstartup()用于初始化Windows sockets,并返回WSADATA结构体,只有调用了该函数后,程序才能调用其他WIndows sockets api函数,实现网络通信。函数第一个参数为版本号,第二个用于接收返回的WSADATA结构体。

 

 SOCKET PASCAL FAR socket(int af, int type, int protocol);   该调用要接收三个参数:af、type、protocol。参数af指定通信发生的区域,: WINDOWS中仅支持AF_INET,它是网际网区域。参数type 描述要建立的套接字的类型。这里分三种:一是TCP流式套接字(SOCK_STREAM)提供了一个面向连接、可靠的数据传输服务,数据无差错、无重复地发送,且按发送顺序接收。内设流量控制,避免数据流超限;数据被看作是字节流,无长度限制,二是数据报式套接字(SOCK_DGRAM)提供了一个无连接服务。数据包以独立包形式被发送,不提供无错保证,数据可能丢失或重复,并且接收顺序混乱。三是原始式套接字 (SOCK_RAW)该接口允许对较低层协议,如IP、ICMP直接访问。参数protocol说明该套接字使用的特定协议,如果调用者不希望特别指定使用的协议,则置为0,使用默认的连接模式。

 

 int bind(int socket, struct socketaddr *address, int addr_len) 功能:将创建的 socket 与 adress (包含 IP和port信息)绑定。 返回值:正常情况返回0,在错误的时候会返回-1 参数 socket 描述将使用的套接字。 参数 addr_len 描述的是参数 adress的长度。 参数 adress 描述将绑定的地址。

int listen(int socket, int backlog) 功能:定义在指定的 Socket 上可有多少个待处理的连接。 返回值:在发生错误时返回-1。 参数socket 是调用 socket() 返回的套接口文件描述符。 参数backlog 是在进入队列中允许的连接数目。

 

int accept(int socket, struct socketaddr *address , int addr_len) 功能:接收客户端连接请求。 返回值:如果连接成功, 函数将返回一个新的套接口文件描述符。接下来,就可以对这个描述符进行发送 (send()) 和接收 (recv()) 操作了。错误时返回-1

参数socket :套接口文件描述符。 参数address struct: sockaddr_in 的指针。 参数addrlen: 长度,常为 sizeof(struct sockaddr_in)

 

int connect(int socket, struct sockaddr *serv_addr, int addrlen) 功能:在客户端被用于连接到服务器。 返回值:发生错误的时候返回-1 参数socket 套接口文件描述符。 参数serv_addr 包含是服务器的地址和端口信息 参数addrlen 长度,常为 sizeof(struct sockaddr_in)

大致流程:

技术分享

 

参考自:

http://www.cnblogs.com/Sniper-quay/archive/2011/06/22/2086636.html

windows下socket编程小例子

标签:支持   sock   size   客户端   结构体   raw   允许   文件描述符   多少   

原文地址:http://www.cnblogs.com/groundwu/p/6079635.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!