用多线程,服务器端一个服务器侦听CSocket对象,和多个线程(每个线程里有一个用来与客户端联接的CSocket对象)。
解决方案 »
- mdi难题--对文档数据处理后需要显示在一个新的子窗口(窗口和之前一样,有好几个视图),要求此窗口不嵌入主框架,呈现独立的状态
- CRichEdit 的文本操作问题
- 如何连接打印机,打印出一直文档信息。
- 比如我拦截了WM_CLOASE消息后,用户选择取消,就不关闭对话框,选择确定就关闭,如何实现?
- 开饭了。
- 文档视图的小问题,急!!!在线等!
- 关于自定义消息!!!
- PACKET32是如何保证不丢包的?
- 大虾,请问extern "C"具体作用,另外,请描述 DEF 文件。
- 用ActiveQT开发Active组件,用MFC调用,当Active组件中事件发生时如何通知到MFC
- 高手!!怎么解决这个芮存泄漏??
- IE屏了右键怎么处理?。。。。。。。。。。。。。。
然后用循环Accept
xxx用来设定请求队列中允许的最大请求数,如果我的请求数大于xxx那么连接就失败了阿。这怎么解决?
你可以用另外一个进程去接收请求,这样你建立起几万个请求都没有问题.
想一个服务端接受多个客户连接,只要把accept到的连接用一个新的线程来处理就可以了?
可以具体说说么?
例如:
服务端:
csocket srvsocket;
csocker licsocket[5];
srvsocket.create(2000);
srvsocket.listen(5);
客户端1:
csocket cltsocket;
cltsocket.create();
cltsocket.connet("mike",2000);
服务端
onAccept()函数
srvsocket.accept(licsocket[0]);
客户端2:
csocket cltsocket;
cltsocket.create();
cltsocket.connet("mike",2000);
服务端
onAccept()函数
srvsocket.accept(licsocket[1]);
.............
.............
服务端
onAccept()函数
srvsocket.accept(licsocket[4]);
也就是说在一个线程里一个端口(2000)可以和5个客户端连接?
如果要更多的就要建立新的线程?
看了你头顶上的问题了么?帮帮忙,谢谢
csocker licsocket;
srvsocket.create(2000);
srvsocket.listen(max_listen_queue);
客户端1:
csocket cltsocket;
cltsocket.create();
cltsocket.connet("mike",2000);
服务端
onAccept()函数
srvsocket.accept(licsocket);
AfxBeginThread(do_service,(LPVOID *)listensocket);线程:
UINT do_service( LPVOID pParam )
{
CSocket sock=CSocket(pParam);
// do you work here
}
}
csocker licsocket[100];
而不是
csocker licsocket[5];
那么不就可以连接多个客户端socket了么?还用启用新的线程么?
还有,服务端新accept的socket的输出/入端口用的是2000,那么多个socket输入/输出可以同时用2000么?
我不明白??不明白?
既然,服务端已经Accept()成功了,那么为什么不在主线程中直接用他,还要新启动一个线程???这是为什么????
solar(int argc,char**argv)
能告诉我么???谢谢了。
服务端accept(licsocket[index]);licsocket具有和licsocket[index];相同的特性,那么licsocket[index]占用的端口号也应是2000,如此不断accept(licsocket[index]));licsocket[index]都是绑定在2000上,这样可以么?
我不明白??不明白?
既然,服务端已经Accept()成功了,那么为什么不在主线程中直接用他,还要新启动一个线程???这是为什么????
solar(int argc,char**argv)
能告诉我么???谢谢了。
〉服务端新accept的socket的输出/入端口用的是2000,那么多个socket输入/输出可以同时用2000么?
你只有一个server,可以的
可以的。因为客户端的ip和端口互不相同
>既然,服务端已经Accept()成功了,那么为什么不在主线程中直接用他,还要新启动一个线程???
主线程还要继续accept;一个线程服务一个客户逻辑简单,互不影响
注意,用时钟的时候只能用CAsyncSocket类,不然你的程序会被阻塞
方法:CSocket->sample
1. 基于窗口的程序,使用异步Socket。
2. 没有窗口的程序,使用线程。