社区
网络编程
帖子详情
非阻塞模式的TCP连接怎么实现呢?(100分)
jbz001
2011-09-12 09:45:41
非阻塞模式的TCP连接怎么实现呢?
我这已经实现了非阻塞模式的UDP连接,但是TCP连接不知道怎么做。
...全文
908
13
打赏
收藏
非阻塞模式的TCP连接怎么实现呢?(100分)
非阻塞模式的TCP连接怎么实现呢? 我这已经实现了非阻塞模式的UDP连接,但是TCP连接不知道怎么做。
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sxcong
2011-09-14
打赏
举报
回复
打开MFC文件夹,看CAsyncSocket的源码
然后,再去codeproject上找找
CCliveHunter
2011-09-14
打赏
举报
回复
Select模型 或者 完成端口模型 王艳平的《网络与通信程序设计》一书中有详细的讲解
masterz
2011-09-14
打赏
举报
回复
file transfer over asynchronous TCP connection via boost.asio
successgl
2011-09-14
打赏
举报
回复
阻塞非阻塞指的是socket啊,与tcp,udp协议没啥关系啊,楼主的问题是不是没有这么简单啊?
blueapples0604
2011-09-14
打赏
举报
回复
利用SELECT监视端口数据就可以
fd_set fds;
timeval timeout={3,0}; //select等待3秒
FD_ZERO(&fds); //每次循环都要清空集合,否则不能检测描述符变化
FD_SET(m_CSocket,&fds); //添加描述符
int sel=select(m_CSocket+1,&fds,NULL,NULL,&timeout);
在等待的timeout时间内,若端口有数据,则select函数会返回,通过判断sel的值,就知道端口是否有数据,或者是超时了。
hurryboylqs
2011-09-13
打赏
举报
回复
UDP连接都会弄 TCP不会不是搞笑么
UnTit1E
2011-09-13
打赏
举报
回复
http://guojun0681.blog.163.com/blog/static/10051312010113113140952/
http://hi.baidu.com/%D1%EE%D4%C6%B7%C9%B5%C4%BF%D5%BC%E4/blog/item/eb5e8439daf9d9e5b211c7b1.html
或许有用
smwhotjay
2011-09-13
打赏
举报
回复
搞笑..
非阻塞tcp. 可以WSASynSelect 关注FD_CONNECT ,然后connect.等待FD_CONNECT事件就行了. WSAEventSelect一样的.
IOCP的acceptEx比较麻烦..
lijianli9
2011-09-13
打赏
举报
回复
WSADATA wsd;
SOCKET cClient;
int ret;
struct sockaddr_in server;
hostent *host=NULL;
if(WSAStartup(MAKEWORD(2,0),&wsd)){return 0;}
cClient=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(cClient==INVALID_SOCKET){return 0;}
//set Recv and Send time out
int TimeOut=6000; //ÉèÖ÷¢Ëͳ¬Ê±6Ãë
if(::setsockopt(cClient,SOL_SOCKET,SO_SNDTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
TimeOut=6000;//ÉèÖýÓÊÕ³¬Ê±6Ãë
if(::setsockopt(cClient,SOL_SOCKET,SO_RCVTIMEO,(char *)&TimeOut,sizeof(TimeOut))==SOCKET_ERROR){
return 0;
}
//ÉèÖ÷Ç×èÈû·½Ê½Á¬½Ó
unsigned long ul = 1;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul);
if(ret==SOCKET_ERROR)return 0;
//Á¬½Ó
server.sin_family = AF_INET;
server.sin_port = htons(25);
server.sin_addr .s_addr = inet_addr((LPCSTR)pSmtp);
if(server.sin_addr.s_addr == INADDR_NONE){return 0;}
connect(cClient,(const struct sockaddr *)&server,sizeof(server));
//select Ä£ÐÍ£¬¼´ÉèÖó¬Ê±
struct timeval timeout ;
fd_set r;
FD_ZERO(&r);
FD_SET(cClient, &r);
timeout.tv_sec = 15; //Á¬½Ó³¬Ê±15Ãë
timeout.tv_usec =0;
ret = select(0, 0, &r, 0, &timeout);
if ( ret <= 0 )
{
::closesocket(cClient);
return 0;
}
//Ò»°ã·ÇËø¶¨Ä£Ê½Ì׽ӱȽÏÄÑ¿ØÖÆ£¬¿ÉÒÔ¸ù¾Ýʵ¼ÊÇé¿ö¿¼ÂÇ ÔÙÉè»Ø×èÈûģʽ
unsigned long ul1= 0 ;
ret = ioctlsocket(cClient, FIONBIO, (unsigned long*)&ul1);
if(ret==SOCKET_ERROR){
::closesocket (cClient);
return 0;
v_table
2011-09-13
打赏
举报
回复
异步模型好多,看实际情况用哪个。。
shenyi0106
2011-09-13
打赏
举报
回复
简单应用可以用CAsyncSocket
龙行天下之Sky
2011-09-13
打赏
举报
回复
int iMode = 0; //0表示阻塞,1表示非阻塞
ioctlsocket(m_socket,FIONBIO, (u_long FAR*) &iMode);
要自己设置的,函数就是ioctsocket
yynetsdk
2011-09-13
打赏
举报
回复
bsd socket or CSocket , CAnsySocket
TCP
聊天室06 客户端程序设计(
非阻塞
模式
)
//Client.cpp/*-------------------------------------------------------------------- 使用
TCP
协议的聊天室客户端程序(
非阻塞
模式
) --------------------------------------------------------------------*/ #include <window...
由一个EPOLLET
模式
accept()问题引起对
TCP
连接
的回顾
问题起因 在生产环境出现一个
TCP
网络
连接
的异常,socket accept()时返回错误,错误码errno=24,strerror=”Too many open files”,线程占用CPU接近
100
%,即死循环。查明直接原因是,进程的open files数量太小,当
连接
数超时该数目时即会返回上述错误。(这要提醒一句:要注意父子进程的limits参数,也许系统配置参数已修改,但父进程是在修改前启...
【Socket编程】
非阻塞
connect
阅读Skynet源码的过程中,发现一种
非阻塞
connect方式。以前不知道,这次好好学习一下。 文章参考自:
非阻塞
connect编写方法介绍(董的博客)
TCP
连接
的建立涉及到一个三次握手的过程,鉴于RTT波动范围很大,从局域网的几个毫秒到几百个毫秒甚至广域网上的几秒。这段时间内,我们可以执行其他处理工作,以便做到并行。因此,
非阻塞
connect可以为我所用。 1、fcn
Windows
tcp
客户端程序 设置
非阻塞
Windows
tcp
client
非阻塞
//
tcp
clienttest.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" //
TCP
client //client send string to server //Visual C++ 6.0 #include #include //#inclu
VC下SOCKET通信,设置
非阻塞
模式
,添加心跳检查
/* VC下SOCKET通信,设置
非阻塞
模式
,添加心跳检查 */ #include #pragma comment(lib, "ws2_32.lib") /* ms
tcp
ip.h */ struct
tcp
_keepalive { u_long onoff; u_long keepalivetime; u_long keepaliveinterval; }; t
网络编程
18,356
社区成员
64,161
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章