正文
windowsrecvfrom,windowsrecvfrom设置非阻塞
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
在windows下,如何用纯C语言实现socket网络编程?
要实现网络编程,首先得了解网络编程的原理。大部分网络编程底层都是通过TCP/IP或者UDP协议进行通讯,不管是TCP还是UDP通讯,都是通过调用socket实现的。Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。
Ping命令是用来进行网络连接测试的一个程序,其对应的文件名为“ping.exe”。根据不同的测试目的,此命令可以带上不同的参数。
CSocket类是由CAsyncSocket继承而来的,事实上,在MFC中CAsyncSocket 逐个封装了WinSock API,每个CAsyncSocket对象代表一个Windows Socket对象,使用CAsyncSocket 类要求程序员对网络编程较为熟悉。
socket编程的教材网上搜罗下还是很多的,思路基本上也是一样的,程序分两部分客户端和服务器端第一部分 服务器端创建服务器套接字(create)。服务器套接字进行信息绑定(bind),并开始监听连接(listen)。
下面用Socket实现一个windows下的c语言socket通信例子,这里客户端传递一个字符串,服务器端进行接收。
WSARecvFrom()的概述
1、lpFrom:(可选)指针,指向重叠操作完成后存放源地址的缓冲区。lpFromlen:指向from缓冲区大小的指针,仅当指定了lpFrom才需要。lpOverlapped:指向WSAOVERLAPPED结构的指针(对于非重叠套接口则忽略)。
2、封包助手是一个能拦截网络应用程序数据包的纯绿色软件(压缩包300KB,无插件无病毒,不需安装),包括Send,Recv,WSASend,WSARecv,SendTo,RecvFrom,WSASendTo,WSARecvFrom。
3、含义不同 recv abbr. 接收;收到(receive)。recv from 收到来自?。用法不同 recv receive的基本意思是“接受”“收到”,仅指接到或收到某物的客观事实,而不表示主观态度(接受或拒绝)。
recvfrom总是返回-1,怎么获取错误码?(非阻塞)
1、失败返回-错误代码EBADF 参数s非合法的socket处理代码EFAULT 参数中有一指针指向无法存取的内存空间。ENOTSOCK 参数s为一文件描述词,非socket。EINTR 被信号所中断。EAGAIN 此动作会令进程阻断,但参数s的socket为不可阻断。
2、设置非阻塞模式,通过fcntl方法设置,为了保存socket其他设置,一般选择先获取 status flags, 并在其基础上设置O_NONBLOCK属性, 代码如下:fcntl失败返回值为-1, 同时errno会被设置成对应的错误码。
3、若无错误发生,recvfrom()返回读入的字节数。如果连接已中止,返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。
4、如果非要用阻塞的方式,可以把recvfrom放在一个子线程里,recvfrom完成后子线程即退出,主线程中在启动子线程后使用WaitForSingleObject(子线程句柄,等待时间),来等待子线程退出。
5、一:同步阻塞 它是最简单也最常用的网络IO模型。linux下默认的socket都是blocking的。 从图中可以看到,用户进程调用recvfrom这个系统调用后,就处于阻塞状态。然后kernel就开始了IO的第一个阶段:数据准备。
使用recvfrom接收UDP包在Windows和Linux平台的不同表现
1、的IO模型是编程中使用socket两种模式的策略,它们适用的场合不同,在不同的操作系统上支持的模型也不同,例如windows从NT版本才开始支持 完成端口模型。
2、Linux中关闭socket为close,Windows中为closesocket。Linux中有变量socklen_t,Windows中直接为int。因为linux中的socket与普通的fd一样,所以可以在TCP的socket中,发送与接收数据时,直接使用read和write。
3、Linux中是有UDP校验的,API不需要设置 如果recvfrom收到数据说明已经校验成功,没收到数据的情况很多,其中一种是校验失败。linuxudp发送队列满怎么办?发送队列满了,可以通过清除当前发送队列或增加发送队列的数量来解决。
4、使用recvfrom接收。Windows11,是由微软公司(Microsoft)开发的操作系统,应用于计算机和平板电脑等设备。需要使用recvfrom接收udp组播,是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,是一种高效但不可靠传输。
关于windowsrecvfrom和windowsrecvfrom设置非阻塞的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。