繁体   English   中英

C ++ Winsock-accept()

[英]C++ Winsock - accept()

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

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

客户端程序

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

伺服器

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连接到服务器。 如果连接,则键入任何内容并按Enter键,然后查看服务器的行为。

  5. 摆脱对客户端中的shutdown(ConnectSocket, SD_SEND)的调用。 应该没关系,但是这让我感到有点不寻常-我从来没有只关闭套接字上的一个方向,当完全完成套接字后,我总是使用SD_BOTH。

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

祝好运!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM