如何使用win32编写套接字通信程序

时间:2009-02-17 18:06:04

标签: c++ windows sockets winsock

新人想要了解win32中的套接字编程。我知道一点MFC,但这不好开始,因为它只是隐藏了程序员的内部细节。

8 个答案:

答案 0 :(得分:2)

使用winsock函数(Winsock2.h)。

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

MFC会模糊一些细节你是对的,我不知道为什么他们决定把它包起来。

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

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

答案 3 :(得分:1)

答案是使用win32套接字API。

MSDN中有关于此API的信息。

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

谷歌搜索会找到代码样本,大概是。

您需要了解一些关于网络的信息:例如,“IP地址”和“端口”是什么。

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

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

答案 4 :(得分:1)

我完全同意ChrisW,并赞扬你传递MFC。

有关很多出色的WinSock信息,请参阅MSDN Winsock Reference

另外,虽然它可能太大而无法学习,但我认为这是一个非常好的Socket Server Class - 请告诉我你是否觉得它有用。

答案 5 :(得分:1)

一个小提示(假设您正在使用Visual Studio和Winsocket librabry),您需要手动链接WS2_32.Lib。我发现这个小步骤是许多初学者错过的东西,并且因为它而得到一些奇怪的错误(在旁观者的眼中很奇怪)。 http://social.microsoft.com/Forums/en-US/vcgeneral/thread/cfefa4a5-1f1a-4987-8bc7-f3197cb5826c

也; imho你不应该使用MFC。在google-net上有很多很棒的针对winsocket编程的指南:)

祝你好运

答案 6 :(得分:1)

答案 7 :(得分:0)

两个选项:

  1. 编写基于文件流的代码,该代码与串行端口通信。
  2. 使用C ++库进行串行端口通信(google for this)
  3. 第一个选项意味着编写“锅炉板”代码,这样您最好使用第三方库。

    串口编程最常见的“启动故障”是与设备建立通信链路。您需要对端口名称,波特率,奇偶校验等进行正确设置(通常由设备制造商提供)。

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

    所有串行通信的工作方式如下: - 您将命令写入串行端口 - 轮询读缓冲区以获取来自设备的响应

    据我所知,C ++或MFC中没有内置的串口通信类,但是有很多第三方库。