VC6
是console下的
同步通讯就可以
不要是msdn(碟)里的,我没有;网上能DOWN的也可以,E文也行
C/S 可以在一台机器上运行

解决方案 »

  1.   

    http://www.vcroad.com/shownews.asp?newsid=879
      

  2.   

    同一台机上怎么测试?
    Server用了888端口,Client用什么端口?为什么不要多于80字节?
      

  3.   

    //client#include <winsock2.h>
    #include <winbase.h>
    #include <iostream>#define PORT 5000void main(void)
    {
    WORD    wVersionRequested;
    WSADATA wsaData;

    int     err;
     
    wVersionRequested = MAKEWORD(2, 2);
     
    err = WSAStartup(wVersionRequested, &wsaData);
    if(err != 0) 
    {
    return;
    }
     
    if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
    {
    WSACleanup();
    return; 
    }
     
    /*
    //get local ip address 
    char name[32];

    int rtnvl_gethostname;

    rtnvl_gethostname = gethostname(name, sizeof(name));
    if(rtnvl_gethostname == SOCKET_ERROR)
    {
    std::cout<<"get host name fail !"<<std::endl;
    } struct hostent FAR * hostent; 

    hostent = gethostbyname(name);

    printf("ip address is %s\n", inet_ntoa(*((struct in_addr *)hostent->h_addr)));
    */ SOCKET sock;
    sock = socket(AF_INET, SOCK_STREAM, 0);

    struct sockaddr_in  server;

    server.sin_family = AF_INET;
    server.sin_port = htons(PORT);
    server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149"); int rtnvl_connect; 
     
    rtnvl_connect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in));
    if(rtnvl_connect == SOCKET_ERROR)
    {
    int erro = WSAGetLastError (); std::cout<<"connect fail !"<<std::endl;
    Sleep(3000);  closesocket(sock);
    WSACleanup(); 
    return ; 
    }

    char buffer[1024]; int count;

    count = recv(sock, buffer, sizeof(buffer), MSG_PEEK);
    if(count == SOCKET_ERROR)
    {
    closesocket(sock);
    WSACleanup(); 
    return ; 
    } std::cout<<buffer<<std::endl; 
    Sleep(3000); closesocket(sock);
    WSACleanup(); 
    }
      

  4.   

    //server #include <winsock2.h>
    #include <winbase.h>
    #include <iostream>
    #include <fstream>#define PORT      5000
    #define MAXLISTEN 5 void main(void)
    {
    WORD    wVersionRequested;
    WSADATA wsaData;
    int     err;
     
    wVersionRequested = MAKEWORD(2, 2);
     
    err = WSAStartup(wVersionRequested, &wsaData);
    if(err != 0) 
    {
    return;
    }
     
    if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
    {
    WSACleanup();
    return; 


    SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock == INVALID_SOCKET)
    {
    std::cout<<"socket fail !"<<std::endl;
    Sleep(3000);
    return ;
    } struct sockaddr_in localaddr;
     
    localaddr.sin_family        = AF_INET; 
    localaddr.sin_port        = htons(PORT);
    localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

    int rtnvl_bind;

    rtnvl_bind = bind(sock, (struct sockaddr *)&localaddr, sizeof(struct sockaddr_in));
    if(rtnvl_bind == SOCKET_ERROR)
    {
    std::cout<<"bind fail !"<<std::endl;
    Sleep(3000);
    return ;  
    } int rtnvl_listen;  rtnvl_listen = listen(sock, MAXLISTEN);
    if(rtnvl_listen == SOCKET_ERROR)
    {
    std::cout<<"listen fail !"<<std::endl;
    Sleep(3000);
    return ;  
    } while(true)
    {
    SOCKET newsocket; 

    struct sockaddr_in clientaddr;  int length;  length = sizeof(struct sockaddr_in); 

    newsocket = accept(sock, (struct sockaddr FAR *)&clientaddr, &length);
    if(newsocket == INVALID_SOCKET)
    {
    std::cout<<"accept fail !"<<std::endl;
    Sleep(3000); int error = WSAGetLastError(); std::cout<<error<<std::endl; Sleep(3000); break ; 
    }//send file char buffer[] ="this is the server !";
    int rtnvl_send;
    rtnvl_send = send(newsocket, buffer, sizeof(buffer), MSG_DONTROUTE); if(rtnvl_send == SOCKET_ERROR)
    {
    std::cout<<"send fail !"<<std::endl;
    Sleep(3000);
    break ; 
    }
    //
    closesocket(newsocket);
    } closesocket(sock);
    WSACleanup(); 
    }
      

  5.   

    client 中的ip地址要改为你的本机的ip server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149");
      

  6.   

    client建立一个console啊直接粘贴进去,编译就可以了啊,然后运行server建立一个console啊直接粘贴进去,编译就可以了啊,然后运行server要先运行
      

  7.   

    compile出来是.OBJ
    build出来是 12个错
      

  8.   

    分别放到文件中,打开dos窗口,使用cl命令
    cl -GX c.cpp wsock32.lib-----不知道编译后能否运行
      

  9.   

    加个库啊哥们,ws2_32.lib真是服了你
      

  10.   

    有EXE了 :)
    不过一运行是
    bind fail !
      

  11.   

    菜单哪里加 ws2_32.lib?
    ws2_32.lib在哪个目录下?你当我什么都不会 来教
      

  12.   

    //server#include <winsock2.h>
    #include <winbase.h>
    #include <iostream>
    #include <fstream>#pragma comment(lib, "ws2_32.lib")#define PORT      5000
    #define MAXLISTEN 5 void main(void)
    {
    WORD    wVersionRequested;
    WSADATA wsaData;
    int     err;
     
    wVersionRequested = MAKEWORD(2, 2);
     
    err = WSAStartup(wVersionRequested, &wsaData);
    if(err != 0) 
    {
    return;
    }
     
    if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
    {
    WSACleanup();
    return; 


    SOCKET sock; sock = socket(AF_INET, SOCK_STREAM, 0);
    if(sock == INVALID_SOCKET)
    {
    std::cout<<"socket fail !"<<std::endl;
    Sleep(3000);
    return ;
    } struct sockaddr_in localaddr;
     
    localaddr.sin_family        = AF_INET; 
    localaddr.sin_port        = htons(PORT);
    localaddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

    int rtnvl_bind;

    rtnvl_bind = bind(sock, (struct sockaddr *)&localaddr, sizeof(struct sockaddr_in));
    if(rtnvl_bind == SOCKET_ERROR)
    {
    std::cout<<"bind fail !"<<std::endl;
    Sleep(3000);
    return ;  
    } int rtnvl_listen;  rtnvl_listen = listen(sock, MAXLISTEN);
    if(rtnvl_listen == SOCKET_ERROR)
    {
    std::cout<<"listen fail !"<<std::endl;
    Sleep(3000);
    return ;  
    } while(true)
    {
    SOCKET newsocket; 

    struct sockaddr_in clientaddr;  int length;  length = sizeof(struct sockaddr_in); 

    newsocket = accept(sock, (struct sockaddr FAR *)&clientaddr, &length);
    if(newsocket == INVALID_SOCKET)
    {
    std::cout<<"accept fail !"<<std::endl;
    Sleep(3000); int error = WSAGetLastError(); std::cout<<error<<std::endl; Sleep(3000); break ; 
    }//send file char buffer[] ="this is the server !";
    int rtnvl_send;
    rtnvl_send = send(newsocket, buffer, sizeof(buffer), MSG_DONTROUTE); if(rtnvl_send == SOCKET_ERROR)
    {
    std::cout<<"send fail !"<<std::endl;
    Sleep(3000);
    break ; 
    }
    //
    closesocket(newsocket);
    } closesocket(sock);
    WSACleanup(); 
    }//client#include <winsock2.h>
    #include <winbase.h>
    #include <iostream>#pragma comment(lib, "ws2_32.lib")#define PORT 5000void main(void)
    {
    WORD    wVersionRequested;
    WSADATA wsaData;

    int     err;
     
    wVersionRequested = MAKEWORD(2, 2);
     
    err = WSAStartup(wVersionRequested, &wsaData);
    if(err != 0) 
    {
    return;
    }
     
    if(LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2) 
    {
    WSACleanup();
    return; 
    }
     
    /*
    //get local ip address 
    char name[32];

    int rtnvl_gethostname;

    rtnvl_gethostname = gethostname(name, sizeof(name));
    if(rtnvl_gethostname == SOCKET_ERROR)
    {
    std::cout<<"get host name fail !"<<std::endl;
    } struct hostent FAR * hostent; 

    hostent = gethostbyname(name);

    printf("ip address is %s\n", inet_ntoa(*((struct in_addr *)hostent->h_addr)));
    */ SOCKET sock;
    sock = socket(AF_INET, SOCK_STREAM, 0);

    struct sockaddr_in  server;

    server.sin_family = AF_INET;
    server.sin_port = htons(PORT);
    server.sin_addr.S_un.S_addr = inet_addr("10.96.128.149"); int rtnvl_connect; 
     
    rtnvl_connect = connect(sock, (struct sockaddr FAR*)&server, sizeof(struct sockaddr_in));
    if(rtnvl_connect == SOCKET_ERROR)
    {
    int erro = WSAGetLastError (); std::cout<<"connect fail !"<<std::endl;
    Sleep(3000);  closesocket(sock);
    WSACleanup(); 
    return ; 
    }

    char buffer[1024]; int count;

    count = recv(sock, buffer, sizeof(buffer), MSG_PEEK);
    if(count == SOCKET_ERROR)
    {
    closesocket(sock);
    WSACleanup(); 
    return ; 
    } std::cout<<buffer<<std::endl; 
    Sleep(3000); closesocket(sock);
    WSACleanup(); 
    }
      

  13.   

    不用加库了,直接build程序运行