小弟我需要实现c/s连接,至少有240多个客户端,如果他们同时向服务器发送消息
我需要实现c/s连接,至少有240多个客户端,如果他们同时向服务器发送消息
我需要实现c/s连接,至少有240多个客户端,如果他们同时向服务器发送消息,winsock在执行第一个getdata时会把剩下的数据都加载如缓冲区(数据流量可能很大,每次传的数据量不大)而且我的客户端是每秒发送100个数据值到S端,这样就会有2400个数据同时到达S端,
我想请问
1、就是现在我的S端会不会处理很慢,在这种情况下(因为我还希望实时保存),是不是8K存满以后,以后发送过来的数据都会丢失?有没有什么方法知道缓冲区是否已满?有没有更好的办法解决这样的问题,
2、我采用winsock数组,进行一对一连接,那么在getdata时会不会把别的winsock缓冲区内的数据给接受过来???每一个winsock是不是有独立缓冲区?
3、我准备把每个客户端发过来的数据(二进制)都附加一个标志位和结束位,方便我的数组接收,这样会不会发生混乱?
因为我的客户端都是单片机,我不希望单片机处理数据,都让其在我的S端处理。
有哪位大侠以前做过类似的例子,能不能留下EMAIL,MSN,QQ,帮帮我,,谢谢啊
EMAIL:liupeishi@hotmail.com
MSN:liupeishi@hotmail.com
QQ:114389983
那位有例子能不能发一个到我的邮箱中,谢谢,,我现在孬了,,,,,
------解决方案--------------------
不仅会慢那么简单哦.......可能会“没有响应”
这种数据量建议你用vb.net来做,用多线程处理
------解决方案--------------------
感觉用vb中很危险,vb在性能和效率上都比较弱,感觉用vc封装通讯部分的dll,提供接口供vb调用比较好.
------解决方案--------------------
你说的情况,在服务器端并不少见。应该说有一定的硬件性能要求,相对于网络的低速而言,多线程并不一定会比单线程有明显的速度优势,相反资源占用会变大,调控也会变得困难,多线程时用户响应会及时一些,但这在服务端似乎并不重要。
你的几个问题,说说我的观点:
1、数据到达后,及时getdata,不要peekdata,缓冲区应该不会不够的^_^当然这也只是一个说说而已。其实winsock控件在产生DataArrival事件时,端口缓冲区实际上已清空,它会为你管理好一切的,不用你操心。ws2_32.dll是用消息通知数据到达的,winsock控件先取出数据放入自己的缓冲区,再产生DataArrival事件,它自己的缓冲区理论上只受限于内存。
2、每一个winsock是独立端口、独立缓冲区,getdata肯定不会把别的winsock缓冲区内的数据给接受过来,不然winsock数组就根本没用了,此点绝不用担心;前面说过,同样winsock控件会为你管理好一切的
3、客户端发过来的数据有一定格式,是很正常事情,你自已别把Index弄错了,就没问题;
服务器端的处理能力,一方面是硬件性能,一方面是代码效率,问再多也没有,只有自己试试才知道能不能胜任。
------解决方案--------------------
小吉说的有道理,写个测试程序,试试就知道了。
------解决方案--------------------
没有测试过 测试要自己做的 晚上可以交流下
我的qq短消息 给你
不过 用.net作肯定没有问题
顺便问一下 tcp or udp 每一个包多大 是什么类型数据
我需要实现c/s连接,至少有240多个客户端,如果他们同时向服务器发送消息,winsock在执行第一个getdata时会把剩下的数据都加载如缓冲区(数据流量可能很大,每次传的数据量不大)而且我的客户端是每秒发送100个数据值到S端,这样就会有2400个数据同时到达S端,
我想请问
1、就是现在我的S端会不会处理很慢,在这种情况下(因为我还希望实时保存),是不是8K存满以后,以后发送过来的数据都会丢失?有没有什么方法知道缓冲区是否已满?有没有更好的办法解决这样的问题,
2、我采用winsock数组,进行一对一连接,那么在getdata时会不会把别的winsock缓冲区内的数据给接受过来???每一个winsock是不是有独立缓冲区?
3、我准备把每个客户端发过来的数据(二进制)都附加一个标志位和结束位,方便我的数组接收,这样会不会发生混乱?
因为我的客户端都是单片机,我不希望单片机处理数据,都让其在我的S端处理。
有哪位大侠以前做过类似的例子,能不能留下EMAIL,MSN,QQ,帮帮我,,谢谢啊
EMAIL:liupeishi@hotmail.com
MSN:liupeishi@hotmail.com
QQ:114389983
那位有例子能不能发一个到我的邮箱中,谢谢,,我现在孬了,,,,,
------解决方案--------------------
不仅会慢那么简单哦.......可能会“没有响应”
这种数据量建议你用vb.net来做,用多线程处理
------解决方案--------------------
感觉用vb中很危险,vb在性能和效率上都比较弱,感觉用vc封装通讯部分的dll,提供接口供vb调用比较好.
------解决方案--------------------
你说的情况,在服务器端并不少见。应该说有一定的硬件性能要求,相对于网络的低速而言,多线程并不一定会比单线程有明显的速度优势,相反资源占用会变大,调控也会变得困难,多线程时用户响应会及时一些,但这在服务端似乎并不重要。
你的几个问题,说说我的观点:
1、数据到达后,及时getdata,不要peekdata,缓冲区应该不会不够的^_^当然这也只是一个说说而已。其实winsock控件在产生DataArrival事件时,端口缓冲区实际上已清空,它会为你管理好一切的,不用你操心。ws2_32.dll是用消息通知数据到达的,winsock控件先取出数据放入自己的缓冲区,再产生DataArrival事件,它自己的缓冲区理论上只受限于内存。
2、每一个winsock是独立端口、独立缓冲区,getdata肯定不会把别的winsock缓冲区内的数据给接受过来,不然winsock数组就根本没用了,此点绝不用担心;前面说过,同样winsock控件会为你管理好一切的
3、客户端发过来的数据有一定格式,是很正常事情,你自已别把Index弄错了,就没问题;
服务器端的处理能力,一方面是硬件性能,一方面是代码效率,问再多也没有,只有自己试试才知道能不能胜任。
------解决方案--------------------
小吉说的有道理,写个测试程序,试试就知道了。
------解决方案--------------------
没有测试过 测试要自己做的 晚上可以交流下
我的qq短消息 给你
不过 用.net作肯定没有问题
顺便问一下 tcp or udp 每一个包多大 是什么类型数据