多个socket通信,这样设计行不行?是否需要用多线程?
1。用一个类TMyWork来记录socket和socket用到的数据结构。一个类只有一个socket。
2。所有的socket都用new建立,用的是TClientSocket类。
3。在TMyWork中,有和socket相关联的若干定时器,全部new建立,用的是TTimer,用于重新连接socket,初始化,处理接收的消息等。
new语句使这样写的,对吗?Form_Main是主窗体;
TClientSocket * Socket_Client = new TClientSocket(Form_Main);
TTimer * Timer_TcpConnect = new TTimer(Form_Main);
4。socket和定时器的接口函数在TMyWork中。
5。在TMyWork中,重写socket的connect,close,receive,error事件,重写各个定时器的ontimer函数。
6。各个socket之间不共享数据,也不传递数据,各处理各的数据,有各自的接收缓存,发送缓存。
7。TMyWork类在主窗体中另外建立,用一个链表管理。
*****************************************************************************************
问题:
1。我这里new的socket如果很多,会不会使主窗体的响应变慢。就是说,如果有100个socket,同时收到消息的时候,是不是窗体就像死了一样。
2。是否改为多线程好些?但这样一来,线程是否就太多了,因为一个TMyWork可能就需要:接收、接收处理、发送等多个线程,但这样就不需要定时器了。
3。改用多线程的话,是否有一个新的问题出现,就是一个TMyWork中,几个线程需要同步和互斥,因为接收缓存、发送缓存等在他们之间使共享的。
4。多线程会不会因为太多不能new的情况?这样的话,可能就有一个TMyWork不能建立。
最初没有考虑太多,一着急,就用了n个定时器解决了问题,感觉不太好,大家能否给点意见。