我要做一个应用程序,可以网络互联的那种,我既可以选在作为客户端也可以选择做为服务器,当我作为客户端时候我填入了对方的ip想和他建立连接,如果对方没有打开应用程序或者没有主动设为主机,提示连接失败,你们都用什么方法建立连接啊,然后提示连接成功!具体点啊小弟初学vc!谢谢各位大虾!

解决方案 »

  1.   

    一般的TCP连接就可以,分服务器模块和客户端模块来做
      

  2.   

    基于TCP的socket编程:服务器端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:绑定套接字到一个IP地址和一个端口上(bind());3:将套接字设置为监听模式等待连接请求(listen());4:请求到来后,接受连接请求,返回一个新的对应于此次连接的套接字(accept());5:用返回的套接字和客户端进行通信(send()/recv());6:返回,等待另一连接请求;7:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。服务器端代码如下:#include <stdio.h>
    #include <Winsock2.h>
    void main()
    {
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
       return;
    }if ( LOBYTE( wsaData.wVersion ) != 1 ||
             HIBYTE( wsaData.wVersion ) != 1 ) {
       WSACleanup( );
       return; 
    }
    SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
    addrSrv.sin_family=AF_INET;
    addrSrv.sin_port=htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,5);SOCKADDR_IN addrClient;
    int len=sizeof(SOCKADDR);
    while(1)
    {
       SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);
       char sendBuf[50];
       sprintf(sendBuf,"Welcome %s to here!",inet_ntoa(addrClient.sin_addr));
       send(sockConn,sendBuf,strlen(sendBuf)+1,0);
       char recvBuf[50];
       recv(sockConn,recvBuf,50,0);
       printf("%s\n",recvBuf);
       closesocket(sockConn);
    }}客户端编程的步骤:1:加载套接字库,创建套接字(WSAStartup()/socket());2:向服务器发出连接请求(connect());3:和服务器端进行通信(send()/recv());4:关闭套接字,关闭加载的套接字库(closesocket()/WSACleanup())。客户端的代码如下:#include <stdio.h>
    #include <Winsock2.h>
    void main()
    {
    WORD wVersionRequested;
    WSADATA wsaData;
    int err;wVersionRequested = MAKEWORD( 1, 1 );err = WSAStartup( wVersionRequested, &wsaData );
    if ( err != 0 ) {
       return;
    }if ( LOBYTE( wsaData.wVersion ) != 1 ||
             HIBYTE( wsaData.wVersion ) != 1 ) {
       WSACleanup( );
       return; 
    }
    SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;
    addrSrv.sin_addr.S_un.S_addr=inet_addr("127.0.0.1");
    addrSrv.sin_family=AF_INET;
    addrSrv.sin_port=htons(6000);
    connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));
    char recvBuf[50];
    recv(sockClient,recvBuf,50,0);
    printf("%s\n",recvBuf);
    send(sockClient,"hello",strlen("hello")+1,0);closesocket(sockClient);
    WSACleanup();
    }
      

  3.   

    Before any TCP client and server can communicate with each other, each end must specify the socket 
    pair for the connection:the local IP address, local port, foreign IP address, and foreign port.The foreign IP address and foreign port must be specified by the client in the call to connect.
    The two local local values are normally chosen by the kernel as part of the connect function.
      

  4.   

    可信赖的UDP编程即可
    推荐UDT,Enet,raknetsourceforge.net被关,udt估计你下载不到了,到enet官网去下吧