gpt4 book ai didi

C++ Winsock - 接受()

转载 作者:行者123 更新时间:2023-11-28 08:24:02 26 4
gpt4 key购买 nike

我已经开始尝试用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com