Winsocket

Winsock编程_第3篇_套接字阻塞模式1

无人久伴 提交于 2019-12-06 01:29:17
最近受一位编程牛人的影响,自己决定从今天开始将Windows Sockets 网络编程的内容以日志的形式记录下来,其一是为自己保留一份笔记,其二是加深自己对winsock编程的理解,其三是和喜欢代码的朋友一起分享编程的乐趣,我不知道自己能不能一直坚持下去,但是我会尽自己最大的努力做到每周更新1-2篇,在此也希望更多的朋友为我提出建议,如果你也喜欢编程,在阅读代码的过程中有什么疑问,请与本人进行探讨。 每次我会以一段程序代码的分析来阐述其中的知识点,因为阅读大量优秀代码可以快速提升自身的编程水平。 套接字阻塞模式开发: 套接字的阻塞模式是指套接字在执行操作是,调用函数在没有完成操作之前不会立即返回的工作模式。阻塞模式的套接字用于少量数据的发送与接收到简单的网络程序的开发。 在阻塞模式的套接字上,调用任何一个Windows Sockets API都会消耗不确定的等待时间。在调用recv()函数时,发生在内核中等待数据和复制数据的过程如图所示: 当调用recv()函数时,系统会首先检查是否有准备好的数据。如果数据没有准备好,系统就处于等待状态。当数据准备好后,将数据从系统缓冲区复制到用户空间,然后该函数返回。在套接字应用程序中,当调用recv()函数时,用户空间未必就已经存在数据,此时recv()函数就会处于等待状态。 并不是所有Windows Sockets

Winsock编程_第2篇_UDP套接字编程

孤者浪人 提交于 2019-12-05 21:54:10
最近受一位编程牛人的影响,自己决定从今天开始将Windows Sockets 网络编程的内容以日志的形式记录下来,其一是为自己保留一份笔记,其二是加深自己对winsock编程的理解,其三是和喜欢代码的朋友一起分享编程的乐趣,我不知道自己能不能一直坚持下去,但是我会尽自己最大的努力做到每周更新1-2篇,在此也希望更多的朋友为我提出建议,如果你也喜欢编程,在阅读代码的过程中有什么疑问,请与本人进行探讨。 每次我会以一段程序代码的分析来阐述其中的知识点,因为阅读大量优秀代码可以快速提升自身的编程水平。 UDP套接字编程: 首先介绍UDP套接字服务端和客户端的工作模式,如图所示: //recvfrom()函数声明如下 int recvfrom ( SOCKET s, //套接字 char FAR * buf, //接收数据缓冲区 int len, //接收数据缓冲区大小 int flags, //该参数影响recvfrom()函数的行为 struct sockaddr FAR* from, //返回发送数据主机地址 int FAR * fromlen //地址长度 ); //调用成功返回接收数据字节数,失败则返回SOCKET_ERROR //sendto()函数声明如下 int sendto( SOCKET s, const char FAR * buf, int len, int