【问题标题】:Sample TCP Client/Server Application示例 TCP 客户端/服务器应用程序
【发布时间】:2011-03-21 19:35:27
【问题描述】:

我需要以下场景的示例应用程序
1) 能够接受请求的 IOCP TCP Server
2) 客户端发出请求并发送接收操作
3) SERVER 关闭连接
4) 客户端打开另一个套接字进行连接并进行发送接收操作

通过这个例子,我想看看客户端如何打开一个连接,在服务器关闭该连接后,另一个成功的连接可以与客户端建立并再次发送接收操作
实际上服务器如何处理丢弃的连接和套接字仍然打开不需要?

请帮我解决这个问题
这可以在我的身体里吹出一个新的灵魂!!!!

【问题讨论】:

  • “这可以在我的身体里吹出一个新的灵魂” - 我会尽快找到使用这个表达的方法。
  • 未指定语言。因为你添加了一个 .NET 标签,我猜是 C#?但请具体说明。

标签: .net sockets tcp


【解决方案1】:

几年前,我在 The Code Project 上写了一系列文章,其中介绍了一组用于构建基于 IOCP 的 TCP 服务器的代码。代码在 C++ 中,您的问题被标记为“.net”,但您似乎不太可能希望直接使用 IOCP 开发 .Net 服务器,因为您可以使用各种异步套接字方法来做同样的事情而无需用实际的 IOCP 方面弄脏你的手。

不管怎样……

第一篇文章从这里链接到:http://www.serverframework.com/products---the-free-framework.html

我已经稍微更新了代码,可以在here找到它。

没有客户端代码,但是你可以通过telnet连接到服务器并发送和接收数据...

【讨论】:

  • 我只想知道它如何处理丢弃的连接,这非常重要,假设黑客尝试打开到我的服务器的 1000 个连接,并且在服务器拒绝该连接后,但创建该连接的套接字仍在连接,我认为它使用服务器资源,正如您使用 netstat 命令所看到的那样
  • 这完全取决于你如何编写服务器。如果客户端打开 1000 个连接并且什么都不做,那么这些连接将耗尽服务器资源。也许你的服务器有一个需要登录的协议,你可以确保连接不能停留在“预登录”阶段超过 x 秒,如果他们这样做了就断开它们......这与 IOCP 方面无关你如何处理这种情况,每个连接或基于选择的服务器都会遇到与旧学校线程相同的问题。
猜你喜欢
  • 2019-08-15
  • 1970-01-01
  • 2012-05-30
  • 1970-01-01
  • 2014-03-04
  • 2012-11-25
  • 2010-11-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多