不是什么新问题,但是在设计的时候前期没有考虑清楚架构,现在遇到一些麻烦。关于程序的结构设计,有些地方没想清楚:界面描述:
主界面是个listview为基类的SDI,列表每个item在双击后,弹出一个Dialog。而这个dialog则是各种远控功能的操作面板。简单地说,一个item对应一个远控连接。那么问题在这里:因为怕麻烦,没有采用IOCP的模型,而考虑使用listen-select,然后为每一个accept的连接创建一个处理线程。我很少做MFC的程序,所以我就不是很清楚,我在这里创建的线程该如何和界面描述里的操作象对应结合。比如说:如果我同时对2个连接进行下载操作,那么在2个dialog里都点了诸如“文件下载”这样的button,我原来写的时候,就直接在这个button的响应函数里用recv()和send()进行操作了( 其 套接字会通过item传给dialog)。原来这么写的缺陷就是无法同时对2个处于连接状态的套接字进行下载操作。所以再不用IOCP的前提下,我修改成了前面提到的“每个accept后创建一个新线程”的方法。那么这个时候我对于“文件下载”button里的响应该怎么写呢?我有点摸不到头脑了。还望兄台们指点,谢谢

解决方案 »

  1.   


    1楼的朋友你没明白我的意思,你说的是线程创建的参数传递问题。比如说,我和机器A建立一个连接,称为con-1,在建立这个连接的时候,进行listen的主线程会为此专门创建一个线程,这个线程对这个con-1套接字进行select监视。
    在运行中,我们可以同时有很多个con:con-1、con-2、con-3等等,每个con对应的都会创建一个线程:有多少个连接,就新建多少个线程而我说的dialog里的操作,则是和user交互的一面。con-1和 con-2都各自对应各自的dialog,对应各自的诸如“文件下载”这样的操作,我就是说这些个操作的响应,怎么和之前因连接而生的那些线程之间,一一对应起来。
      

  2.   

    建立一个全局的连接链表,将线程里面的连接成功的socket保持在链表里面。然后显示在listview里面