小弟是个菜鸟,刚刚接触VC请各位高手大哥多多帮忙呀!

解决方案 »

  1.   

    先在网上找个例子看看吧,www.vckbase.com上有不少
      

  2.   

    //////////////////////////////////////////
    // 服务端代码
    //////////////////////////////////////////
    #include <winsock.h> //包含头文件
    #pragma comment(lib, "ws2_32.lib") //需要连接winsock库
    void server()
    {
    struct sockaddr_in sin, addr;
    int client, addrlen;
    WSADATA wsadata;
    SOCKET m_sock;
    int m_Port = 2000; //服务端监听的端口号 //初始化winsock
    WSAStartup(MAKEWORD(1, 1), &wsadata); m_sock = socket(AF_INET, SOCK_STREAM, 0);
    if (m_sock == INVALID_SOCKET)
    {
    return;
    } sin.sin_family = AF_INET;
    sin.sin_addr.s_addr = INADDR_ANY;
    sin.sin_port = htons(m_Port); if (bind(m_sock, (struct sockaddr *)&sin,
    sizeof(struct sockaddr_in)) == SOCKET_ERROR)
    {
    closesocket(m_sock);
    m_sock = INVALID_SOCKET;
    return;
    } if (listen(m_sock, SOMAXCONN) == SOCKET_ERROR)
    {
    closesocket(m_sock);
    m_sock = INVALID_SOCKET;
    return;
    } while (1)
    {
    addrlen = sizeof(struct sockaddr_in);
    client = accept(m_sock, (struct sockaddr *)&addr, &addrlen);
    if (client == INVALID_SOCKET)
    {
    continue;
    } //启动线程,处理与客户端的通信
    if (_beginthread(ThreadStart, 0, (void *)client) == -1)
    {
    closesocket(client);
    }
    } closesocket(m_sock);
    m_sock = INVALID_SOCKET;
    WSACleanup();
    }//线程函数
    void ThreadStart(void *arg)
    {
    int client = (int)arg;
    int n = 0, r = 0; //此处client就是与客户端通信的socket
    //可以用recv()/send()接收或发送数据 //关闭socket, 退出线程函数, 线程结束
    closesocket(client);
    }//////////////////////////////////////////
    // 客户端代码
    //////////////////////////////////////////
    #include <winsock.h> //包含头文件
    #pragma comment(lib, "ws2_32.lib") //需要连接winsock库
    void client(char *szHost, int nPort)
    {
    struct hostent *he;
    unsigned long iaddr;
    struct sockaddr_in m_HostAddr;
    SOCKET sock;
    WSADATA wsadata; //初始化winsock
    WSAStartup(MAKEWORD(1, 1), &wsadata); //以下代码解释服务器地址
    memset(&m_HostAddr, 0, sizeof(m_HostAddr));
    iaddr = inet_addr(szHost);
    if (iaddr != INADDR_NONE)
    {
    m_HostAddr.sin_addr.s_addr = iaddr;
    }
    else
    {
    he = gethostbyname(szHost);
    if (he == NULL)
    return;
    memcpy(&(m_HostAddr.sin_addr), he->h_addr, he->h_length);
    } m_HostAddr.sin_family = AF_INET;
    m_HostAddr.sin_port = htons(nPort);
    /////////////////// sock = socket(AF_INET, SOCK_STREAM, 0);
    if (sock == INVALID_SOCKET)
    {
    return;
    } //设置接收的timeout, 可以不设
    int opt = 2000;
    if (setsockopt(sock, SOL_SOCKET, SO_RCVTIMEO,
    (char *)&opt, sizeof(opt)) == SOCKET_ERROR)
    {
    closesocket(sock);
    return;
    } //连接服务端
    if (connect(sock, (const struct sockaddr *)&m_HostAddr,
    sizeof(m_HostAddr)) == SOCKET_ERROR)
    {
    closesocket(sock);
    return;
    } //发送或接收数据
    send(sock, "hello", 5, 0); //关闭socket
    closesocket(sock); WSACleanup();
    }
      

  3.   

    我把以前写的一个例子放进www.tom.com的信箱里了,VC.NET2003写的,用户名:mycsdn2003,密码:111111,标题是"数据传输.你看看吧,我一般用这个信箱做交流用.
      

  4.   

    http://www.vckbase.com/code/listcode.asp?mclsid=9&sclsid=901