社区
网络编程
帖子详情
在VC中如何将一个UDP的socket设置成为非阻塞的阿?---Online waiting
reclusewood
2002-12-03 04:56:42
rt
...全文
604
11
打赏
收藏
在VC中如何将一个UDP的socket设置成为非阻塞的阿?---Online waiting
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cqjiang
2002-12-04
打赏
举报
回复
http://idoor.xiloo.com 《TCP/IP Winsock高级编程》
ysf1980
2002-12-04
打赏
举报
回复
WSAAsyncSelect():要求某一 Socket 有事件 (event) 发生时通知使用者。
格 式: int PASCAL FAR WSAAsyncSelect( SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent );
参 数: s Socket 的编号
hWnd 动作完成後,接受讯息的视窗 handle
wMsg 传回视窗的讯息
lEvent 应用程式有兴趣的网路事件
传回值: 成功 - 0
失败 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
WSAAsyncSelect( s, hWnd, 0, 0 ) -- 取消所有 async 事件设定
呼叫 WSAAsyncSelect 的同时也将此一 socket改变成「非阻拦」(non-blocking)模式。但是此时这个 socket 不能很简单地用 ioctlsocket() 这个函式就将它再变回「阻拦」(blocking)模式。也就是说 WSAAsyncSelect 和 ioctlsocket 所改变的「非阻拦」模式仍是有些不同的。如果您想将一个「非同步」(asynchronous)模式的 socket 再变回「阻拦」模式的话,必须
先呼叫 WSAAsyncSelect() 将所有的 async 事件取消,再用 ioctlsocket() 将它变回阻拦模式。
ioctlsocket():控制 Socket 的模式。
格 式: int PASCAL FAR ioctlsocket( SOCKET s, long cmd, u_long FAR *argP );
参 数:s Socket 的识别码
cmd 指令名称
argP 指向 cmd 参数的指标
传回值: 成功 - 0
失败 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
说明: 此函式用来获取或设定 Socket 的运作参数。
cmd 的值可为:
FIONBIO -- 开关 non-blocking 模式
FIONREAD -- 自 Socket 一次可读取的资料量(目前 in buffer 的资料量)
SIOCATMARK -- OOB 资料是否已被读取完
reclusewood
2002-12-04
打赏
举报
回复
救命啊~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
sjzxyg
2002-12-04
打赏
举报
回复
0
reclusewood
2002-12-04
打赏
举报
回复
顶哦,高手来提示一下!
shesh
2002-12-04
打赏
举报
回复
我以前做的,好象有setsockopt,这是设置超时的.数据报方式的设置是一样的.
不过告诉你.这设置超时只有winsock2.0才支持
WSADATA data;
sockaddr_in addr;
int ret=0;
int optval = 10000;
char m_put_str[512]="";
char m_Port[6];
memset(m_Port,0,sizeof(m_Port));
strcpy(m_Port,(LPCTSTR) AfxGetApp()->GetProfileString("系统设置","TCP侦听端口","3333"));
memset(&addr,0,sizeof(addr));
addr.sin_family = AF_INET;
addr.sin_port = htons(atoi(m_Port));
if(WSAStartup(MAKEWORD(2, 2), &data))
{
return FALSE;
}
if (LOBYTE(data.wVersion)!=2||HIBYTE(data.wVersion)!=2)
{
return FALSE;
}
Sck = socket(AF_INET, SOCK_STREAM, 0);
if(Sck==INVALID_SOCKET)
{
return FALSE;
}
ret = bind(Sck, (sockaddr*)&addr, sizeof(addr));
if(ret==SOCKET_ERROR)
{
return FALSE;
}
if(setsockopt(Sck,SOL_SOCKET,SO_SNDTIMEO,
(char * )&optval,sizeof(optval))==SOCKET_ERROR)
{
return FALSE;
}
if(setsockopt(Sck,SOL_SOCKET,SO_RCVTIMEO,
(char * )&optval,sizeof(optval))==SOCKET_ERROR)
{
return FALSE;
}
if(listen(Sck, SOMAXCONN) == SOCKET_ERROR)
{
return FALSE;
}
DWORD m_ThreadId;
m_ThreadHandle = CreateThread(NULL,0,(LPTHREAD_START_ROUTINE) DummyMyThread,
this,CREATE_SUSPENDED|THREAD_TERMINATE,&m_ThreadId);
if(!m_ThreadHandle)
{
return FALSE;
}
ResumeThread(m_ThreadHandle);
return TRUE;
reclusewood
2002-12-03
打赏
举报
回复
WSAAsyncSelect();
setsockopt();
他们中间参数怎么设置阿
ysf1980
2002-12-03
打赏
举报
回复
你用WSAAsyncSelect();
它自动就变为非阻塞模式,除非你用setsockopt()
改变它
reclusewood
2002-12-03
打赏
举报
回复
拜托写详细一点,我也在看msdn,不过没有什么头绪
救命啊~~~~~~~~~~~~~~~~`
reclusewood
2002-12-03
打赏
举报
回复
兄弟哦,详细一些,多谢了,嘿嘿。
zfive
2002-12-03
打赏
举报
回复
setsockopt()
socket
端口定义大全
daytime 13/
udp
Daytime (RFC 867) # Jon Postel # 14/tcp Unassig
ne
d # 14/
udp
Unassig
ne
d # 15/tcp Unassig
ne
d [was
ne
tstat] # 15/
udp
Unassig
ne
d # 16/tcp Unassig
ne
d # 16/
udp
Unassig
ne
d qotd 17/tcp Quote of...
2020-12-03
$ adb shell am start -n "org.appspot.apprtc/org.appspot.apprtc.Con
ne
ctActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER -D
Wait
ing
for application to come
onli
ne
: org....
Qemu2.x boot sdcard raw image with -M raspi2
Total pages: 243600 [ 0.000000] Ker
ne
l command li
ne
: rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 [ 0.000000] PID hash table entries: 4096 (order: 2, ...
QEMU KVM libvirt 手册(3) - Storage Media
c表示第
一个
hard drive d表示cd or dvd nop表示网络启动 可以用-boot menu=on显示boot menu 可以在monitor
中
设置
boot_set c boot from snapshot 如果带参数-snapshot,则所有的修改将被放入临时...
WebRTC网络Physical
Socket
Server之WSAEventselect模型使用
WebRTC网络Physical
Socket
Server之WSAEventselect模型使用WebRTC网络Physical
Socket
Server之WSAEventselect模型使用前言一、WebRTC网络模型1、WebRTC网络Physical
Socket
Server①, win平台网络io②, linux平台网络...
网络编程
18,356
社区成员
64,217
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章