如题,该socket连接为tcp连接,短连接,同步。
该如何实现同时建立100个socket连接?

解决方案 »

  1.   

    楼上的能详细一点说吗?
    我现在是所有的客户端都通过80端口连接到server上啊!
    高手请回答啊!
      

  2.   

    可是我要求是所有的clilent都连接到server的80端口啊!
    楼上的能举个例子吗?最好有源码看看,因为以前没有做过类似的东东!
      

  3.   

    楼上的请注意了,我现在只需要完成client,我要做的事情是在client同时建立100个socket连接到server,要求这100个连接都通过server的80端口。
    不知道这个怎么实现!!!
      

  4.   

    难道就真的没有人回答了吗?
    csdn真是让我失望啊!
      

  5.   

    晕!100个连接很容易啊,建立100个SOCKET,CONNECT 100 次,就可以了啊
      

  6.   

    hehe,看来我是理解错楼主的问题啦,sorry!
      

  7.   

    可是要同时啊!
    因为我建立的tcp连接是短连接,是同步的。
    如果按照楼上的意思,是不是这样:
    for(i=0;i<100;i++)
    {
        socket();
        connect();
        send();
        recv();
        closesocket();
    }
      

  8.   

    短连接 ?是什么意思啊?
    你同时启动100个线程来启动100个连接到服务器不就OK了?就好像apache可以接受四面八方的连接一样.
      

  9.   

    UINT Proc(void *)
    {
      connect();
      return 1;
    }///////////////////////////
    for(int i=0;i<=100;i++)
    {
     AfxBeginThread(Proc,NULL);
    }
      

  10.   

    不好意思,楼上说的是不是这个意思?
    UINT Proc(void *)
    {
        socket()  
        connect();
        send();
        recv();
        closesocket();
      return 1;
    }
    ///////////////////////////for(int i=0;i<=100;i++)
    {
     AfxBeginThread(Proc,NULL);
    }
    因为以前没有做过多线程,可能会问得比较细,多谢了!
      

  11.   

    while(1)
    {
        HANDLE newsock = accept();
        BeginThread(threadproc, newsock);
    }
    每次接收一个连接就新开一个线程。
    或者使用非阻塞模式并且使用select或者使用完成端口
      

  12.   

    楼上的,我是要完成模拟100个client同时和server建立socket连接,tcp的,都是基于80端口,同步的。
      

  13.   

    呵呵,对不起。看错了。
    是不是Client要连接Server 100次?
    那直接
    for(int i=0;i<100;i++)
    {
        connect()
    }
    不就行了?同时建立100个连接是不可能的。
      

  14.   

    楼上的意思是不是先for循环connect100次,然后再分别进行数据的收发,是吗?这样就可以不用多线程了?
      

  15.   

    同步的不好做到就是能够在线程中同步了,系统还是不会给你在同时开启100个socket连接的
    看看用完成端口来实现可不可以了
      

  16.   

    我打算采用上面各位的意见,这么来做了:
    UINT Proc(void *)
    {
        socket()  
        connect();
        send();
        recv();
        closesocket();
      return 1;
    }
    ///////////////////////////for(int i=0;i<=100;i++)
    {
     AfxBeginThread(Proc,NULL);
    }现在如果我想把一个(const char *)msgbuf这个值带入到线程中怎么带进去啊?
      

  17.   

    再有个问题,我开启了100个线程,这100个线程的SOCKET变量是不是应该各不相同啊?
      

  18.   

    AfxBeginThread(Proc,NULL); 中的第二个参数就是传入的参数
    你在Proc里把第二个参数进行强制转换就可以了如果传一个参数不够的话.你也可以传一个结构进去 .
    具体的可以看看线程方面的资料
      

  19.   

    回复人:sunshinee(杏子) ( 一级(初级)) 信誉:100  2004-07-28 11:45:00  得分:0再有个问题,我开启了100个线程,这100个线程的SOCKET变量是不是应该各不相同啊?-- 
    SOCKET变量就一个吧.你只要connect就OK了