新手想学习win32中的socket编程。我知道一点 MFC 但这不是开始的好点,因为它只是隐藏了程序员的内部细节。
8 回答
使用 winsock 函数 (Winsock2.h)。
Beej 的指南是一个非常常见的起点。自从我开始使用这些东西已经有几年了,但是 iirc,该指南使用 Berkeley 套接字并在适当的地方指出了与 winsock 的区别。
你说得对,MFC 会掩盖一些细节,我不知道他们为什么决定包装它。
有许多关于 WinSock 编程的好书和教程。这是一个;
答案是使用win32 socket API。
MSDN 中有关于此 API 的信息。
它(所谓的“Winsock”API)类似于(基于)Unix/Posix API,因此和 MSDN 一样,很多关于在 Unix 上使用套接字的文献(书籍)也是相关的。
谷歌搜索会找到你的代码示例,大概。
你会想知道一点关于网络的知识:例如,“IP 地址”和“端口”是什么。
您需要选择一种协议(UDP 或 TCP)。
Win32 的不同之处之一是您可以在连接套接字时使用 ReadFile 和 WriteFile,这意味着您可以使用与 ReadFile 和 WriteFile 关联的重叠 I/O 选项。
我全心全意地同意 ChrisW 并赞扬你传递 MFC。
请参阅MSDN Winsock 参考以获取大量重要的 WinSock 信息。
此外,虽然它可能太大而无法学习,但我有一个我认为非常好的Socket 服务器类——如果你觉得它有用,请告诉我。
一个小提示是(假设您使用 Visual Studio 和 Winsocket 库)您需要手动链接 WS2_32.Lib。我发现这个小步骤是很多初学者错过的,因此会出现一些奇怪的错误(在旁观者看来很奇怪)。 http://social.microsoft.com/Forums/en-US/vcgeneral/thread/cfefa4a5-1f1a-4987-8bc7-f3197cb5826c
还; 恕我直言,您不应该使用 MFC。google-net 上有很多很棒的 winsocket 编程指南 :)
祝你好运
两种选择:
- 编写与串行端口对话的基于文件流的代码。
- 使用 C++ 库进行串行端口通信(谷歌为此)
第一个选项意味着编写“样板”代码,因此最好使用 3rd 方库。
串行端口编程最常见的“开始问题”是与设备建立通信链接。您需要正确设置端口名称、波特率、奇偶校验等(通常由设备制造商提供)。
然后还会有一个设备的“命令集”。例如,如果您发送“?” 到设备,它将返回制造商名称等设备信息(“?”命令是一个示例,它不是标准 - 命令集因设备而异)。
所有串行通信都是这样工作的: - 您向串行端口写入命令 - 轮询读取缓冲区以获取设备的响应
据我所知,C++ 或 MFC 中没有内置的串行端口通信类,但有很多 3rd 方库用于此目的。