用SOCKET API在循环中发送较大的二进制文件,如何使发送端为非阻塞方式? 是不是一定得用多线程?有没有什么简单的方法? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 为什么费要用非阻塞呢?设置socket为非阻塞://设置非阻塞方式连接 unsigned long ul = 1; ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul); if(ret==SOCKET_ERROR)return 0; 好多函数都可以实现:WSAIOCTL, setsockopt,ioctlsock,,当调用 WSAEventSlect,WSAasyncSelct()都会将socket 设置为非阻塞的模式;其实楼主的思路是对的,当有事件触发的时候在调用:看一点伪代码BEGINchar buf[BLOCKSIZE] = {0}; file.Seek(0, CFile::begin); for(;;){nLen = file.Read(buf, BLOCKSIZE); if(nLen == 0) break; nSize = senSo.Send(buf, nLen);memset(buf,0,sizeof(buf));dwCount += nSize; } file.Close();senSo.Close();if(m_dwFileSize == dwCount)END 工具栏使用图标的图案怎么做啊? 按MSDN已经加了LIB,为什么还是未定义 我想做一个音频播放的实时音量指示器?谢谢(DirectShow可以做吗) 寻求向DirectX程序输出文字的解决方案 如何在对话条内添加按钮? 老大请进:不用多线程,关于 CreateWaitableTimer 的线程阻塞问题? 关于ActiveX发布的一个问题 我在View视图里画的表格在Win98里正常,但在Win2000里变得很小,怎么办? 征求幂运算的算法,希望有详细的解释和代码范例,谢谢! 智能指针有什么不一样的地方?ADO 链接集和记录集指针不Close 可以吗? 请教接收网络文件? 头痛啊!
unsigned long ul = 1;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul);
if(ret==SOCKET_ERROR)return 0;
WSAIOCTL, setsockopt,ioctlsock,,当调用 WSAEventSlect,WSAasyncSelct()都会将
socket 设置为非阻塞的模式;
其实楼主的思路是对的,当有事件触发的时候在调用:看一点伪代码
BEGIN
char buf[BLOCKSIZE] = {0};
file.Seek(0, CFile::begin);
for(;;){
nLen = file.Read(buf, BLOCKSIZE);
if(nLen == 0) break;
nSize = senSo.Send(buf, nLen);
memset(buf,0,sizeof(buf));
dwCount += nSize;
}
file.Close();
senSo.Close();
if(m_dwFileSize == dwCount)
END