2

新手想学习win32中的socket编程。我知道一点 MFC 但这不是开始的好点,因为它只是隐藏了程序员的内部细节。

4

8 回答 8

2

使用 winsock 函数 (Winsock2.h)。

于 2009-02-17T18:13:27.363 回答
2

http://beej.us/guide/bgnet/

Beej 的指南是一个非常常见的起点。自从我开始使用这些东西已经有几年了,但是 iirc,该指南使用 Berkeley 套接字并在适当的地方指出了与 winsock 的区别。

于 2009-02-17T18:18:28.223 回答
1

你说得对,MFC 会掩盖一些细节,我不知道他们为什么决定包装它。

有许多关于 WinSock 编程的好书和教程。这是一个;

http://www.codeproject.com/KB/IP/winsockintro01.aspx

于 2009-02-17T18:14:15.317 回答
1

答案是使用win32 socket API。

MSDN 中有关于此 API 的信息。

它(所谓的“Winsock”API)类似于(基于)Unix/Posix API,因此和 MSDN 一样,很多关于在 Unix 上使用套接字的文献(书籍)也是相关的。

谷歌搜索会找到你的代码示例,大概。

你会想知道一点关于网络的知识:例如,“IP 地址”和“端口”是什么。

您需要选择一种协议(UDP 或 TCP)。

Win32 的不同之处之一是您可以在连接套接字时使用 ReadFile 和 WriteFile,这意味着您可以使用与 ReadFile 和 WriteFile 关联的重叠 I/O 选项。

于 2009-02-17T18:14:31.573 回答
1

我全心全意地同意 ChrisW 并赞扬你传递 MFC。

请参阅MSDN Winsock 参考以获取大量重要的 WinSock 信息。

此外,虽然它可能太大而无法学习,但我有一个我认为非常好的Socket 服务器类——如果你觉得它有用,请告诉我。

于 2009-02-17T21:39:21.890 回答
1

一个小提示是(假设您使用 Visual Studio 和 Winsocket 库)您需要手动链接 WS2_32.Lib。我发现这个小步骤是很多初学者错过的,因此会出现一些奇怪的错误(在旁观者看来很奇怪)。 http://social.microsoft.com/Forums/en-US/vcgeneral/thread/cfefa4a5-1f1a-4987-8bc7-f3197cb5826c

还; 恕我直言,您不应该使用 MFC。google-net 上有很多很棒的 winsocket 编程指南 :)

祝你好运

于 2009-02-17T21:59:07.897 回答
1

我建议看

Winsock 入门 (Windows)

并且

解开编写 Winsock 2 分层服务提供程序的奥秘

于 2009-02-20T17:13:51.570 回答
0

两种选择:

  1. 编写与串行端口对话的基于文件流的代码。
  2. 使用 C++ 库进行串行端口通信(谷歌为此)

第一个选项意味着编写“样板”代码,因此最好使用 3rd 方库。

串行端口编程最常见的“开始问题”是与设备建立通信链接。您需要正确设置端口名称、波特率、奇偶校验等(通常由设备制造商提供)。

然后还会有一个设备的“命令集”。例如,如果您发送“?” 到设备,它将返回制造商名称等设备信息(“?”命令是一个示例,它不是标准 - 命令集因设备而异)。

所有串行通信都是这样工作的: - 您向串行端口写入命令 - 轮询读取缓冲区以获取设备的响应

据我所知,C++ 或 MFC 中没有内置的串行端口通信类,但有很多 3rd 方库用于此目的。

于 2009-02-17T18:13:41.433 回答