求一个VC++上socket编程的helloworld程序
不用MFC类  有注释
有client.cpp
and server.cpp那位好心人有这样的程序
学习下,谢谢你的回复,节日快乐!!

解决方案 »

  1.   

    孙鑫老师书中的代码
    //Server.cpp
    #include   <Winsock2.h>
    #include   <stdio.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[100];
    sprintf(sendBuf, "Welcome   %s   to   http://www.sunxin.org ",
    inet_ntoa(addrClient.sin_addr));
    send(sockConn,sendBuf,strlen(sendBuf)+1,0);
    char   recvBuf[100];
    recv(sockConn,recvBuf,100,0);
    printf( "%s\n ",recvBuf);
    closesocket(sockConn);
    }
    }
    //Client.cpp
    #include   <Winsock2.h>
    #include   <stdio.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[100];
    recv(sockClient,recvBuf,100,0);
    printf( "%s\n ",recvBuf);
    send(sockClient, "This   is   lisi ",strlen( "This   is   lisi ")+1,0);closesocket(sockClient);
    WSACleanup();
    }
      

  2.   

    我现给你写了一个,并且注释写得已经十分详细了,编译的时候不要忘了加入ws2_32.lib首先是服务器端:
    #include "Winsock2.h"
    #include <stdio.h>void main()
    {
    WORD wVersonRequested;
    WSADATA wsaData;
    int err; //创建套接字版本
    wVersonRequested=MAKEWORD(1,1);
    err=WSAStartup(wVersonRequested,&wsaData); if (err!=0)
    {
    return;
    } //验证套接字版本
    if ((LOBYTE(wVersonRequested)!=1)||
    (HIBYTE(wVersonRequested)!=1))
    {
    WSACleanup();
    return;
    } /*
    TCP协议编程,服务器端主要分为以下几个步骤:
    1、创建套接子
    2、绑定套接字(bind)
    3、将套接字设置为监听模式(listen)
    4、接受连接请求,并返回一个新的用于此次连接的套接字(accept)
    5、send/recv
    6、返回,并等待下次连接请求
    7、关闭套接字
    */ //1、创建套接子
    SOCKET m_socket=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(29000);

    //2、绑定套接字(bind)
    bind(m_socket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); //3、将套接字设置为监听模式(listen)
    listen(m_socket,5);

    SOCKADDR_IN addrClient;
    int len=sizeof(SOCKADDR);
    while (true)
    {
    //4、接受连接请求,并返回一个新的用于此次连接的套接字(accept)
    SOCKET m_sockClient=accept(m_socket,(SOCKADDR*)&addrClient,&len);
    //5、send/recv
    send(m_sockClient,"Hello World!This is Server",strlen("Hello World!This is Server")+1,0);
    char recvBuf[100];
    recv(m_sockClient,recvBuf,100,0);
    printf("The Client said: %s",recvBuf);
    //6、关闭创建的新套接字并返回
    closesocket(m_sockClient);
    }
    //7、关闭套接字
    closesocket(m_socket);
    WSACleanup();
    }然后是客户端:
    #include "Winsock2.h"
    #include <stdio.h>void main()
    {
    WORD wVersonRequested;
    WSADATA wsaData;
    int err; //创建套接字版本
    wVersonRequested=MAKEWORD(1,1);
    err=WSAStartup(wVersonRequested,&wsaData);

    if (err!=0)
    {
    return;
    } //验证套接字版本
    if ((LOBYTE(wVersonRequested)!=1)||
    (HIBYTE(wVersonRequested)!=1))
    {
    WSACleanup();
    return;
    } /*
    TCP连接方式客户端主要分为以下几个步骤
    1、创建套接字
    2、连接服务器(connect)
    3、send/receive
    4、关闭套接字
    */ //1、创建套接字
    SOCKET m_socket=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(29000); //2、连接服务器(connect)
    connect(m_socket,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)); char recvBuf[100]; //3、send/receive
    recv(m_socket,recvBuf,100,0);
    printf("The server said:%s\n",recvBuf);
    send(m_socket,"Hello World!This is Client.",strlen("Hello World!This is Client.")+1,0); //4、关闭套接字
    closesocket(m_socket);
    WSACleanup(); getchar();
    getchar();
    }