你直接用connect、bind、socket这些函数不就行了?每一本TCP/IP的书上都有说明的,反正你在控制台程序里也没办法用大部分MFC的类。

解决方案 »

  1.   

    用API方式编//sever Application
    #include "stdafx.h"
    #include "winsock2.h"
    SOCKET sock;
    sockaddr_in addr;
    int nSockErr;
    int main(int argc, char* argv[])
    {
    WSADATA wsadata;
    int result;
    if(WSAStartup(MAKEWORD(2,0),&wsadata))
    {
    MessageBox(NULL,"Your system does not support WinSocket2!","Error!",MB_OK);
    return -1;
    }
    if(wsadata.wVersion!=MAKEWORD(2,0))
    {
    MessageBox(NULL,"Your system does not support WinSocket2!","Error!",MB_OK);
    WSACleanup();
    return -2;
    }
    if((sock=socket(AF_INET,SOCK_STREAM,0))<0)
    MessageBox(NULL,"Create socket error!","Error!",MB_OK);
    addr.sin_family=AF_INET;
    addr.sin_port=htons(8080);
    addr.sin_addr.s_addr=INADDR_ANY; result=bind(sock,(sockaddr*)&addr,sizeof(addr));
    if(result)
    return -1;
    printf("%d\n",result);
    result=listen(sock,SOMAXCONN);
    if(result==SOCKET_ERROR)
    return -1;
    printf("%d\n",result);
    sockaddr adr;
    int len;
    // WaitForSingleObject((HANDLE)sock,-1);
    len=sizeof(adr);
    while(1)
    {
    result=accept(sock,&adr,&len);
    printf("%d\n",result);
    /* char buf[4096];
    buf[recv(sock,buf,4096,0)]=0;
    */
    if(result==INVALID_SOCKET)
    getchar();
    /*if(!result)
    return;*/
    }
    printf("Hello World!\n");
    getchar();
    WSACleanup();
    return ;
    }#include "stdafx.h"
    #include "winsock2.h"
    SOCKET sock;
    sockaddr_in svr;
    int nSockErr;
    void SocketError(int no)
    {
    switch(no)
    {
    case WSA_IO_INCOMPLETE:
    MessageBox(NULL,"Overlapped I/O event object not in signaled state. ","Socket Error!",MB_OK);
    return;
    /* case a:
    MessageBox(NULL,"A socket operation was attempted to an unreachable host. See WSAENETUNREACH","Socket Error!",MB_OK);*/
    }
    }
    //CLIENTint main(int argc, char* argv[])
    {
    WSADATA wsadata;
    int result=0;
    if(WSAStartup(MAKEWORD(2,0),&wsadata))
    {
    MessageBox(NULL,"Your system does not support WinSocket2!","Error!",MB_OK);
    return -1;
    }
    if(wsadata.wVersion!=MAKEWORD(2,0))
    {
    MessageBox(NULL,"Your system does not support WinSocket2!","Error!",MB_OK);
    WSACleanup();
    return -2;
    }
    /* sock=socket(AF_INET,SOCK_STREAM,0);
    addr.sin_family=AF_INET;
    addr.sin_port=htons(0);
    addr.sin_addr.s_addr=INADDR_ANY; result=bind(sock,(sockaddr*)&addr,sizeof(addr));
    printf("%d\n",result);
    if(result)
    return -1;*/
    HOSTENT *a=gethostbyname("localhost");
    memcpy(&(svr.sin_addr),a->h_addr_list,a->h_length);
    svr.sin_family=a->h_addrtype;
    svr.sin_port=htons(8080);
    sock=socket(AF_INET,SOCK_STREAM,0);
    if(sock<0)
    {
    MessageBox(NULL,"Error open scoket!\n","Error",MB_OK);
    return 0;
    } while(1)
    {
    if (connect(sock,(struct sockaddr*)&svr,sizeof(svr))==SOCKET_ERROR)
    {
    int i;
    printf("%d\n",i=WSAGetLastError());
    SocketError(i);
    } getchar();
    };
    int len;
    result=connect(sock,(sockaddr*)&svr,sizeof(svr));
    printf("%d\n",result);
    getchar();
    }
      

  2.   

    控制台程序并没有说不能使用MFC呀,完全可以使用嘛,当然另外一条路就是windoze所指的。