有人有mfc winsocket编程的小例子吗?
我就是想看一下windows socket编程的大概流程,能实现两个窗口简单通讯的就行,有的话给我发一份吧,谢谢了!MFCsocketWindows

解决方案 »

  1.   

    重载CAsyncSocket类 或者 Csocket类,前者是非阻塞的,后者是阻塞。
    如果你只是自己试验一下,用Csocket比较好,用起来简单点,可以直接接收函数返回值来判断成功与否。 
    Csocket里面有封装好的函数,创建一个对象,调用成员函数如:Create,bind,connect等。
    至于客户端和服务端,就是简单的socket流程
    客户端:                服务器:
        create                  create    
                                 
                             listen
                                |
        connect ----------------|
                                |
                                accept
     至此,连接建立,后面就是收发数据:send,recieve了
     注意它的create函数,其实包含socket和bind,所以不要create之后还调用bind
      

  2.   

    不知道connect里面的地址端口怎么跟服务端联系起来呢?
      

  3.   

    这么说吧,a对话框上面有个按钮,点击按钮弹出b对话框,然后要用socket实现这两个对话框之间传递数据。
    a对话框做服务端,b做客户端,我不太理解客户端利用connect函数连接服务端时,怎么确定连接到的就一定是a服务端呢?那两个参数LPCTSTR lpszHostAdrress和hostPort跟a对话框也就是服务端怎么建立联系的呢
      

  4.   

    如果是两个程序connect的话我还能理解,地址就是ip地址,端口理解为程序id,但是我那个例子,是一个程序下的两个窗口,这地址信息应该怎么描述呢,不能用ip地址了吧?
      

  5.   

      一般来说,服务器和客户端不在一个电脑上,所以connect的时候要指定对方的IP地址。你的服务端也在本地,
    那它的IP就是本地的IP。指定IP和端口,就确定了是给哪个路由发送,服务器要receive,这样就能收到数据。
    建议你先把TCP/IP三次握手弄清楚。
      下面是我写的基于Csocket类的客户端 ClientSocket类,这个函数是用来判断连接是否成功的。
    BOOL ClientSocket::InitClient (WCHAR* pszIP, WORD nPort1,WORD nPort2) 
    {
    if (!Socket())//判断是否create成功
    {
    return FALSE;
    }
    if(!Bind(nPort2))//指定本地端口连接
    {
    return FALSE;
    }
    if (!Connect (pszIP, nPort1))//指定对方IP和端口连接
    {
    return FALSE;
    }
    return TRUE;
    }
      

  6.   

    亲,你connect的时候,请求信息不是发给对话框的,你是通过网络socket发送给指定的IP和端口,然后你的服务端对话框有accept函数和listen函数,当他listen到有请求信息,他会accept,于是通信建立起来,后面发送数据就直接往这个socket建立的网络通道里发.