⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 d076.bmp.txt

📁 Visual C++通信编程实例
💻 TXT
字号:
public:
            BOOL InitAndConnet(HWND hwnd, UINT port, CString m_strServer);
public:
        void GetString(CString & str);
        void SendString(CString a);
        CString m_strServer;
        SOCKET m_hSocket;
        sockaddrjn m_addr;
        UINT m_uPort;
    HWND m_hWnd;
};
    由于本例将CServer类和CClient类的声明和实现同时放在了文件ServerClient.h和
ServerClient.cpp中,所以CClient类的声明没必要引用文件winsock.h。
    在类的声明中,m_strServer为服务器的IP地址格式构成的字符串,例如“202.197,66.93”;
m_hSocket为客户机类的Socket; m_addr为地址结构体变量;m_uPort为服务器的Socket的
端口号;m_hWnd为处理该Socket的窗口句柄。
    与CServer类似,CClient类的构造函数将m_hSocket清空,而析构函数—CClient()则调
用WSAAsyncSelect0特InitAndListen()函数内调用该函数设置的几个Socket事件还原为阻塞
方式。详细代码见随书光盘“Chapter 3\Example 4\”。
    CClient类与CServer类的处理类似,不同的在于没有调用accept()函数和listen()函数,
而是调用connect函数与服务器端的Socket进行连接。详见随书光盘“Chapter 3\Example 4\”
中的源码,请读者认真比较CClient类的InitAndConnet()函数和CServer类的InitAndConnet()
函数。主要不同的代码如下:
    //准备服务器的信息,这里需要指定服务器的地址
    m_addr.sin_family= AF_INET;
    m_addr.sin_addr.S_un.S_addr= inet_addr(m_strServer.GetBuffer(0》;
    m_addr.sin_port= htons(m_uPort);  /,改变端口号的数据格式
    //这里主动连接服务器,该过程将等待一定时间
    int ret=0:
    int error=0:
    ret= connect(m_hSocket, (LPSOCKADDR)&m_addr, sheof(m_addr》;
    if(ret==SOCKET_ERROR)
    {,臆接失败
    if(GetLastError()! =WS AEWOULDBLOCK)
    {
    AfxMessageBox(_T(”请确认服务器确实已经打开并工作在同样的端口!”));
    retum FALSE;
    }
    )
(5)编写对话框类的函数
1)添加包含的头文件。在编写对话框的函数前,先定义一个线性表:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -