C++ Winsock - 接受()

标签 c++ visual-studio-2010 winsock winsock2

我已经开始尝试用 C++ 学习 Winsock,但我遇到了一些问题。 我首先遵循 MSDN 上的 Winsock 示例(一个基本的客户端-服务器)。 http://msdn.microsoft.com/en-us/library/ms738545(v=vs.85).aspx

当我构建并运行代码时,我得到了输出:

客户端.exe

已发送 14 个字节。
连接关闭。

Server.exe

Server.exe cmd 窗口中没有任何反应。 我不知道我做错了什么。我是 Winsock 的新手,但就我在 Server.cpp 文件中调用 tell 而言,accept() 函数永远不会返回。

感谢任何帮助/指点。
提前致谢,汤姆。

编辑 代码可以在上面的 MSDN 链接中找到。在页面上向下滚动以获取客户端和服务器的代码。

最佳答案

听起来您的客户端尚未连接到服务器。它连接到某物,但可能不是您的服务器。以下是我要查看的一些内容:

  1. 在客户端中硬编码服务器 IP 地址。

  2. 服务器仅监听 IPv4,但客户端将同时尝试 IPv4 和 IPv6。应该没问题,但我建议在这个阶段消除这种歧义。在客户端中,将 AF_UNSPEC 更改为 AF_INET。

  3. 检查端口 27015(可能在 IPv6 上)是否有其他监听。运行 netstat.exe 以查看正在使用的套接字。

  4. 使用普通的旧式 telnet 连接到您的服务器。如果连接成功,则输入任何内容并按回车键,然后查看服务器的行为。

  5. 摆脱客户端对 shutdown(ConnectSocket, SD_SEND) 的调用。它应该没问题,但它让我觉得有点不寻常 - 我从来没有关闭一个套接字上的一个方向,我总是在完全完成套接字时使用 SD_BOTH。

  6. 您是在同一台机器上运行这两个进程,还是中间有代理或防火墙?例如,代理可能会接受您的客户端连接但无法连接到服务器。

祝你好运!

关于C++ Winsock - 接受(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4707962/

相关文章:

c# - 仅在第一次生成 EF4 POCO 类

c# - 不能发送任何非通用类型的东西

winapi - 使用 winsock 在每个套接字的基础上设置 MSS?

windows - netsh winsock reset - 它的作用是什么?为什么我的无线网卡在使用该命令之前没有建立良好的连接?

c++ - 迭代器不会遍历整个 map

c++ - Tic Tac Toe 游戏无法运行

c# - 如何在 C# 中获得更多封装?

visual-studio-2010 - 可以通过 VS2010、IIS Express、MSDeploy 为 web 包创建应用程序池设置吗? (在 WinXP 上)

c - 查找所有连接到网络的计算机并获取它们的 IP 地址 - Windows C

c++ - 如何检索回滚驱动程序节点强名称?