弱弱的问一个关于socket发送数据问题,
初始化、链接之类的都处理完毕之后,用 send(m_hSocket,temp,1024,0);发送数据之后
如果此时还想发送第二批数据,是否还需要重新初始化、链接服务器之类的操作后再发送?
如果我需要在不同的时间发送若干次这样的数据,是不是每次都需要初始化、connect连接服务器?
能否链接一次,发送多次数据,发送完毕之后关闭连接?
一个初级问题,还请大侠指教

解决方案 »

  1.   

    一次就可以了,剩下的时间在你关闭连接之前都可以随便用SEND发送数据了。
      

  2.   


    我知道楼主为什么会这么问,他是看了一些诱导人的书。只教人初始化,发送一次,关闭套接字。那样是误导的行为。其实连接服务器,最总要的意义就在 套接字上面,只要套接字有了,你这个程序可以跑遍无数个函数可以用。列入 SOCKET client = Connectsion(....);连接成功后,这个 client 就是套接字所在,。
    你把他存起来, 没丢失前都可以用
      

  3.   

    一种是长连接,soceket不关闭,多次发送,最后才关闭,有一种是短连接,一次数据发送完后就把Socket关闭了
      

  4.   

    服务器端: while(1)
    {
    CString strError;
    int error;
    ASSERT(pDlg!=NULL);
    SOCKET s=accept(pDlg->m_hSocket,NULL,NULL);
    if(s==SOCKET_ERROR)
    {
     strError.Format("Accept Error:%d ",error=WSAGetLastError());
     AfxMessageBox(strError);
     closesocket(pDlg->m_hSocket);
     return -1;
    }
    RevFile(s); //接受信息
    }
    客户端:
    初始化完毕之后;连续发送两次数据,如下
    send(m_hSocket,temp1,1024,0);
    send(m_hSocket,temp2,1024,0);问题是,服务器端,只能接受第一次发来的数据temp1,对temp2无法接受,
    跟踪了一下,是accept(pDlg->m_hSocket,NULL,NULL);这个语句只执行了一次再问大侠,如何能够接受两次发送的数据呢?
      

  5.   

    只连接一次accept就只执行一次呀,循环接收就可以收两次发送的数据