环境:NT服务器环境 C/S模式
编程工具: VC 6
性能要求:
1。高稳定运行(30年*12月*30天*24小时)
2。用MFC封装的类实现(CSocket,CAsyncSocket),不用OnRecive()之类的消息触发,而是主动查询方式。
3。用TCP协议 我以前是用的UDP,在应用层加握手和应答来保障,还是比较稳定的,现想用TCP做,以期更好。
我对在MFC的封装基础上实现TCP的应用不了解(比如CSocket的超时退出机制,等等技术细节)时间很紧,没有时间来一点点摸索,请大家帮帮我!
我想多给分,可惜不能。
17 个解决方案
#1
不用ONRECIVE的话我觉得可以实现一个自己固定大小的缓冲区,每次要读的时候将全部内容读入缓冲区,再从缓冲区中读入其他(如INT,STRING,STREAM等等),当缓冲区读完时候再RECEIVE,这样可能需要两个指针来管理这个缓冲区。DELPHI的INDY就是这样处理的。
其他有些选项稍微设一下,比如服务器中的reuseport,还有keep alive等。
其他有些选项稍微设一下,比如服务器中的reuseport,还有keep alive等。
#2
建议:
如果你想追求高稳定性的软件,建议你不要使用windows提供的CSocket或者CAnsynSocket,这些MFC的实现都使用windows消息,所以创建了隐含的窗口,建议你使用IO重载或者完成端口。
使用异步方式完成
—————————————————————————————————
Let your soul guide you upon your way
如果你想追求高稳定性的软件,建议你不要使用windows提供的CSocket或者CAnsynSocket,这些MFC的实现都使用windows消息,所以创建了隐含的窗口,建议你使用IO重载或者完成端口。
使用异步方式完成
—————————————————————————————————
Let your soul guide you upon your way
#3
我不喜欢用MFC封装的类。
直接SOCKET编程好了, 没差多少。
用多线程+SOCKET, 我觉得系统能够比较稳定。
而且系统的可移植性要好些。
说不定那天就可能移到LINUX下了。
直接SOCKET编程好了, 没差多少。
用多线程+SOCKET, 我觉得系统能够比较稳定。
而且系统的可移植性要好些。
说不定那天就可能移到LINUX下了。
#4
数据吞吐量大不大?
客户多不多?
同意rtdb(东临碣石)与barsteng(barsteng)
客户多不多?
同意rtdb(东临碣石)与barsteng(barsteng)
#5
同意rtdb(东临碣石)与barsteng(barsteng)
MFC封装的socket,只用到socket 1.1标准,有大量连接的话,可能会有消息死锁,效率也很低;建议直接用WinSocket 2.0 API,用异步完成端口或事件驱动模型。
MFC封装的socket,只用到socket 1.1标准,有大量连接的话,可能会有消息死锁,效率也很低;建议直接用WinSocket 2.0 API,用异步完成端口或事件驱动模型。
#6
我想用MFC封装的SOCKET类是因为我认为
1。ms 封装的应比我封装的好。
2。有一书说“不用MFC的VC就是没有灵魂的哈姆雷特”
3。项目时间禁,有支持总好一些。
4。最重要的一条:领导要求!!
写写大家的建议!我会在以后的项目中尝试的!
还有要请教大家的:
1。CAsyncSocket 有成员函数支持检测连接是否存在而没有掉线或关闭
不用OnClose 之类,有一个什末东东来检查?
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
谢谢大家,在线等待。
1。ms 封装的应比我封装的好。
2。有一书说“不用MFC的VC就是没有灵魂的哈姆雷特”
3。项目时间禁,有支持总好一些。
4。最重要的一条:领导要求!!
写写大家的建议!我会在以后的项目中尝试的!
还有要请教大家的:
1。CAsyncSocket 有成员函数支持检测连接是否存在而没有掉线或关闭
不用OnClose 之类,有一个什末东东来检查?
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
谢谢大家,在线等待。
#7
有难度,希望大家多回答啊!
#8
你在什么样的操作系统下编程??
对你程序的稳定性可能办不到。。高稳定运行(30年*12月*30天*24小时)
建议你使用linux操作系统来编写。
还有客户端的数量,服务器的运算量等等都要考虑。。
对你程序的稳定性可能办不到。。高稳定运行(30年*12月*30天*24小时)
建议你使用linux操作系统来编写。
还有客户端的数量,服务器的运算量等等都要考虑。。
#9
kao,1年启动一次已经很不错了
#10
调用Connect函数,判断返回0时利用GetLastError,如果返回WSAEISCONN,说明原Socket已经联接。
#11
up
#12
建议先把领导给换了!
用MFC的socket封装类来写高性能和高稳定性的网络通讯程序成功的可能性太小了!
如坚持,你这个太空石就会掉到地球上-------------------
---------------------粉身碎骨!!!!!!!!!!!
用MFC的socket封装类来写高性能和高稳定性的网络通讯程序成功的可能性太小了!
如坚持,你这个太空石就会掉到地球上-------------------
---------------------粉身碎骨!!!!!!!!!!!
#13
谢谢 sevencat(七猫) barsteng(barsteng)rtdb(东临碣石)
HelpLearnVC(suny) flashboy(快活一刀) uhlan(uhlan)
devil97518(天使也会疯)hi2003(我是小小菜鸟)
的意见。
TO :
barsteng(barsteng)rtdb(东临碣石)
HelpLearnVC(suny) flashboy(快活一刀)
hi2003(我是小小菜鸟)
系统的吞吐量不大,只支持3-5个连接,服务器不怕从起,只要能从起后能正长工作,并不丢失数据即可。
TO:uhlan(uhlan)
多谢多谢!
希望大家继续。
uhlan(uhlan)
HelpLearnVC(suny) flashboy(快活一刀) uhlan(uhlan)
devil97518(天使也会疯)hi2003(我是小小菜鸟)
的意见。
TO :
barsteng(barsteng)rtdb(东临碣石)
HelpLearnVC(suny) flashboy(快活一刀)
hi2003(我是小小菜鸟)
系统的吞吐量不大,只支持3-5个连接,服务器不怕从起,只要能从起后能正长工作,并不丢失数据即可。
TO:uhlan(uhlan)
多谢多谢!
希望大家继续。
uhlan(uhlan)
#14
up
#15
1。CAsyncSocket 有成员函数支持检测连接是否存在而没有掉线或关闭
不用OnClose 之类,有一个什末东东来检查?
你应该自己处理。
比较容易想到的就是 client 定时发送信息,server没有收到就认为没有连接了。
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
异步的返回是这样的(搜以前的帖子看看),你调用了 connect 后,就不管了。
在 CAsyncSocket::OnConnect()
{
if(nErrorCode == 0)
{
//连接上了
}
}
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
《windows 网络编程技术》个人感觉还好。
不用OnClose 之类,有一个什末东东来检查?
你应该自己处理。
比较容易想到的就是 client 定时发送信息,server没有收到就认为没有连接了。
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
异步的返回是这样的(搜以前的帖子看看),你调用了 connect 后,就不管了。
在 CAsyncSocket::OnConnect()
{
if(nErrorCode == 0)
{
//连接上了
}
}
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
《windows 网络编程技术》个人感觉还好。
#16
同意TianGo123(农民)的话。
1。发心跳包!
2。同意
3。。。。
1。发心跳包!
2。同意
3。。。。
#17
谢谢大家
谢谢
sevencat(七猫) barsteng(barsteng)rtdb(东临碣石) nbb01()
尤其感谢uhlan(uhlan) TianGo123(农民)
结帖
谢谢
sevencat(七猫) barsteng(barsteng)rtdb(东临碣石) nbb01()
尤其感谢uhlan(uhlan) TianGo123(农民)
结帖
#1
不用ONRECIVE的话我觉得可以实现一个自己固定大小的缓冲区,每次要读的时候将全部内容读入缓冲区,再从缓冲区中读入其他(如INT,STRING,STREAM等等),当缓冲区读完时候再RECEIVE,这样可能需要两个指针来管理这个缓冲区。DELPHI的INDY就是这样处理的。
其他有些选项稍微设一下,比如服务器中的reuseport,还有keep alive等。
其他有些选项稍微设一下,比如服务器中的reuseport,还有keep alive等。
#2
建议:
如果你想追求高稳定性的软件,建议你不要使用windows提供的CSocket或者CAnsynSocket,这些MFC的实现都使用windows消息,所以创建了隐含的窗口,建议你使用IO重载或者完成端口。
使用异步方式完成
—————————————————————————————————
Let your soul guide you upon your way
如果你想追求高稳定性的软件,建议你不要使用windows提供的CSocket或者CAnsynSocket,这些MFC的实现都使用windows消息,所以创建了隐含的窗口,建议你使用IO重载或者完成端口。
使用异步方式完成
—————————————————————————————————
Let your soul guide you upon your way
#3
我不喜欢用MFC封装的类。
直接SOCKET编程好了, 没差多少。
用多线程+SOCKET, 我觉得系统能够比较稳定。
而且系统的可移植性要好些。
说不定那天就可能移到LINUX下了。
直接SOCKET编程好了, 没差多少。
用多线程+SOCKET, 我觉得系统能够比较稳定。
而且系统的可移植性要好些。
说不定那天就可能移到LINUX下了。
#4
数据吞吐量大不大?
客户多不多?
同意rtdb(东临碣石)与barsteng(barsteng)
客户多不多?
同意rtdb(东临碣石)与barsteng(barsteng)
#5
同意rtdb(东临碣石)与barsteng(barsteng)
MFC封装的socket,只用到socket 1.1标准,有大量连接的话,可能会有消息死锁,效率也很低;建议直接用WinSocket 2.0 API,用异步完成端口或事件驱动模型。
MFC封装的socket,只用到socket 1.1标准,有大量连接的话,可能会有消息死锁,效率也很低;建议直接用WinSocket 2.0 API,用异步完成端口或事件驱动模型。
#6
我想用MFC封装的SOCKET类是因为我认为
1。ms 封装的应比我封装的好。
2。有一书说“不用MFC的VC就是没有灵魂的哈姆雷特”
3。项目时间禁,有支持总好一些。
4。最重要的一条:领导要求!!
写写大家的建议!我会在以后的项目中尝试的!
还有要请教大家的:
1。CAsyncSocket 有成员函数支持检测连接是否存在而没有掉线或关闭
不用OnClose 之类,有一个什末东东来检查?
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
谢谢大家,在线等待。
1。ms 封装的应比我封装的好。
2。有一书说“不用MFC的VC就是没有灵魂的哈姆雷特”
3。项目时间禁,有支持总好一些。
4。最重要的一条:领导要求!!
写写大家的建议!我会在以后的项目中尝试的!
还有要请教大家的:
1。CAsyncSocket 有成员函数支持检测连接是否存在而没有掉线或关闭
不用OnClose 之类,有一个什末东东来检查?
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
谢谢大家,在线等待。
#7
有难度,希望大家多回答啊!
#8
你在什么样的操作系统下编程??
对你程序的稳定性可能办不到。。高稳定运行(30年*12月*30天*24小时)
建议你使用linux操作系统来编写。
还有客户端的数量,服务器的运算量等等都要考虑。。
对你程序的稳定性可能办不到。。高稳定运行(30年*12月*30天*24小时)
建议你使用linux操作系统来编写。
还有客户端的数量,服务器的运算量等等都要考虑。。
#9
kao,1年启动一次已经很不错了
#10
调用Connect函数,判断返回0时利用GetLastError,如果返回WSAEISCONN,说明原Socket已经联接。
#11
up
#12
建议先把领导给换了!
用MFC的socket封装类来写高性能和高稳定性的网络通讯程序成功的可能性太小了!
如坚持,你这个太空石就会掉到地球上-------------------
---------------------粉身碎骨!!!!!!!!!!!
用MFC的socket封装类来写高性能和高稳定性的网络通讯程序成功的可能性太小了!
如坚持,你这个太空石就会掉到地球上-------------------
---------------------粉身碎骨!!!!!!!!!!!
#13
谢谢 sevencat(七猫) barsteng(barsteng)rtdb(东临碣石)
HelpLearnVC(suny) flashboy(快活一刀) uhlan(uhlan)
devil97518(天使也会疯)hi2003(我是小小菜鸟)
的意见。
TO :
barsteng(barsteng)rtdb(东临碣石)
HelpLearnVC(suny) flashboy(快活一刀)
hi2003(我是小小菜鸟)
系统的吞吐量不大,只支持3-5个连接,服务器不怕从起,只要能从起后能正长工作,并不丢失数据即可。
TO:uhlan(uhlan)
多谢多谢!
希望大家继续。
uhlan(uhlan)
HelpLearnVC(suny) flashboy(快活一刀) uhlan(uhlan)
devil97518(天使也会疯)hi2003(我是小小菜鸟)
的意见。
TO :
barsteng(barsteng)rtdb(东临碣石)
HelpLearnVC(suny) flashboy(快活一刀)
hi2003(我是小小菜鸟)
系统的吞吐量不大,只支持3-5个连接,服务器不怕从起,只要能从起后能正长工作,并不丢失数据即可。
TO:uhlan(uhlan)
多谢多谢!
希望大家继续。
uhlan(uhlan)
#14
up
#15
1。CAsyncSocket 有成员函数支持检测连接是否存在而没有掉线或关闭
不用OnClose 之类,有一个什末东东来检查?
你应该自己处理。
比较容易想到的就是 client 定时发送信息,server没有收到就认为没有连接了。
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
异步的返回是这样的(搜以前的帖子看看),你调用了 connect 后,就不管了。
在 CAsyncSocket::OnConnect()
{
if(nErrorCode == 0)
{
//连接上了
}
}
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
《windows 网络编程技术》个人感觉还好。
不用OnClose 之类,有一个什末东东来检查?
你应该自己处理。
比较容易想到的就是 client 定时发送信息,server没有收到就认为没有连接了。
2. CAsyncSocket.Connet 实际已经成功了,但为什末总是返回0
异步的返回是这样的(搜以前的帖子看看),你调用了 connect 后,就不管了。
在 CAsyncSocket::OnConnect()
{
if(nErrorCode == 0)
{
//连接上了
}
}
3。请推荐一本讲MFC网络编程的书,追好精深全面一点。
《windows 网络编程技术》个人感觉还好。
#16
同意TianGo123(农民)的话。
1。发心跳包!
2。同意
3。。。。
1。发心跳包!
2。同意
3。。。。
#17
谢谢大家
谢谢
sevencat(七猫) barsteng(barsteng)rtdb(东临碣石) nbb01()
尤其感谢uhlan(uhlan) TianGo123(农民)
结帖
谢谢
sevencat(七猫) barsteng(barsteng)rtdb(东临碣石) nbb01()
尤其感谢uhlan(uhlan) TianGo123(农民)
结帖