哪位高手能抽点时间帮忙说下具体的实现过程?
如:问:“具体怎样利用CSocket实现数据传输?”1、初始化Socket,代码如下:
   if (!AfxSocketInit())
       {
           return FALSE;
      }
2、创建Socket,代码如下:
    ......
    ......
最后、......
当然,附带源代码就更好了!!!(注:VC6.0; 两台机器,一台服务端,一台客户端,可互传数据; 在局域网内先获取IP地址后,再传数据。)非常感激~~~

解决方案 »

  1.   

    这里看看http://www.vckbase.com/document/viewdoc/?id=1421
      

  2.   

     1.  构造CSocket对象,如以下的形式:
        CSocket Serversocket;
    2.  利用CSocket对象的Create()函数创建Windows Socket,Create()函数会调用Bind()函数将此Socket绑定到指定的地址上,其原型为:
        BOOL Create (UINT nSocketPort = 0,  int nSocketType = SOCK_STREAM,  LPCTSTR lpszSocketAddress = NULL);
    其中nSocketPort参数指定通信连接的端口号,端口号可以任意指定,但最好不要使用系统默认的一些端口号,例如21是FTP文件传输使用的端口号;
    3.  Socket创建完毕之后,在服务器端进行监听客户的连接请求,使用如下的代码:
        ServerSocket.Listen();
    紧接着对于客户端而言,将会调用Connect()函数向服务器发送连接请求,而对于服务器而言,则会调用Accept()函数对客户端发送过来的请求连接进行接受和处理,Accept()函数可以创建一个和监听Socket相同的连接Socket来处理客户的请求,二原来的Socket仍然处于监听状态,使用的形式如下。
    客户端:
    ClientSocket.Connect(服务器的地址,服务器的端口号);
    服务器端:
    CSocket ReceiveSocket;
    ServerSocket.Accept(连接Socket,客户的地址结构,客户地址结构的长度)
    4.  对于数据流服务器类型而言,服务器和客户各自通过调用函数来完成数据的发送和接受,使用如下的语句:
    ServerReceive.Receive(缓冲区,缓冲区的长度,接受标志位);
    Client.Send(缓冲区,缓冲区的长度,发送标志位);
    5.  在客户端与服务器端的数据传输完成之后,调用下述语句,释放Socket所占有的资源。
    ServerSocket.Close();
    ReceiveSocket.Close();
    ClientSocket.Close();这是在书上看到的编程一般步骤,看看对你有用不?当然,程序最好是自己写了。
      

  3.   

    #include <string.h> 
    #include <winsock.h> 
    #include <windows.h> 
    #include <iostream.h> 
    #pragma comment (lib,"ws2_32.lib") 
    int main (int argc, char *argv[]) 

    int iportFrom,iportTo; 
    int testsocket; 
    int iopenedport = 0; 
    struct sockaddr_in target_addr; 
    WSADATA wsaData; 
    WORD wVersionRequested=MAKEWORD(1,1); 
    if (argc <= 3) 

    cout << "使用格式 : " << argv[0] << " 主机IP地址 开始端口号 结束端口号\n" << endl; 
    exit(1); 

    if (atoi (argv[2]) > atoi (argv[3])) 

    cout << "端口号出现错误!" << endl; 
    exit(1); 

    else 

    if (WSAStartup (wVersionRequested , &wsaData) ) 

    cout << "连接socket库失败\n" << endl; 
    exit(1); 

    iportFrom=atoi (argv[2]); 
    iportTo=atoi (argv[3]); 
    for (int i=iportFrom; i <= iportTo; i++) 

    cout << "Socket建立连接.." << endl; 
    if ((testsocket=socket (AF_INET,SOCK_STREAM,0) ) == INVALID_SOCKET) 

    cout << "Socket建立失败!" << endl; 
    exit(0); 

    target_addr.sin_family = AF_INET; 
    target_addr.sin_port = htons(i); 
    target_addr.sin_addr.s_addr = inet_addr (argv[1]); 
    cout << "正在扫描端口:" << i << endl; 
    if (connect (testsocket, (struct sockaddr *) &target_addr, sizeof(struct sockaddr)) == SOCKET_ERROR) 
    cout << "端口" << i << "关闭!" << endl; 
    else 

    iopenedport++; 
    cout << "端口" << i << "开放\n" << endl; 


    cout << "目标主机" << argv[1] << "从" << iportFrom << "--" << iportTo << "共有" << iopenedport << "个端口开放" << endl; 
    closesocket (testsocket); 
    WSACleanup(); 

    return 0;