关于 AfxSocketInit() 的使用

一般来说 WASAtarup() 是应用程序调用的windows sockets dll的第一个函数,在调用任何winsock api之前,必须调用wsastartup()进行初始化,最后调用WSACleanup()做清理工作.

也就是 wsastartup 与 wsacleanup 要配对使用.


MFC中的函数 AfxSocketInit() 包装了函数 WSAStartup(), 在支持WinSock的应用程序的初始化函数IninInstance()中调用AfxSocketInit()进行初始化,程序则不必调用WSACleanUp().


如果你再次调用wsacleanup, 难不定会出问题, 我的一个FTP 程序里退出时调用了此函数, 在 N>8 次上传后挂掉了, 最后查出是这个函数的问题.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
MFC中的CSocket类是一个封装了Windows Socket API的类,用于实现网络通信。下面是一个简单的CSocket客户端的示例: 1. 创建一个MFC应用程序项目,选择“对话框”类型。 2. 在资源视图中打开对话框资源,往对话框中添加一个编辑框和一个按钮,并设置按钮的文本为“连接”。 3. 右键单击对话框类视图,添加一个变量,类型为CSocket。我们将使用这个变量来操作网络连接。 4. 打开对话框的类文件,添加以下代码: ``` BOOL CMyDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // TODO: Add extra initialization here // 初始化Winsock库 if (AfxSocketInit() == FALSE) { AfxMessageBox(_T("Failed to initialize Winsock library.")); return FALSE; } return TRUE; } void CMyDlg::OnBnClickedConnect() { // 创建socket对象 if (!m_socket.Create()) { AfxMessageBox(_T("Failed to create socket.")); return; } // 连接服务器 if (m_socket.Connect(_T("127.0.0.1"), 1234) != 0) { AfxMessageBox(_T("Failed to connect server.")); m_socket.Close(); return; } // 连接成功 AfxMessageBox(_T("Connected to server.")); } ``` 在OnInitDialog()函数中,我们初始化了Winsock库。在OnBnClickedConnect()函数中,我们创建了一个CSocket对象,并调用Connect()函数连接服务器。需要注意的是,我们使用了ip地址为"127.0.0.1"和端口号为1234的服务器进行连接。你需要根据实际情况修改这些参数。 5. 编译并运行程序,点击“连接”按钮。如果一切正常,你应该会看到一个提示框,提示你已成功连接到服务器。 这只是一个简单的CSocket客户端示例,如果你需要更复杂的网络通信功能,你可能需要阅读更多的文档和教程,以掌握更高级的用法。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值