Questions tagged «tcp»

1
使用Reactive Extensions进行异步网络编程
该问题是从Code Review Stack Exchange 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 5年前。 socket多年前(以基于事件的异步模式(EAP)方式)进行了一些(或多或少)“低级”异步编程之后,最近又将其“升级”到了TcpListener(异步编程模型(APM)),然后尝试转到async/await(基于任务的异步模式(TAP))时,我不得不忍受所有这些“低级管道”的困扰。所以我在想;为什么不试一试RX(Reactive Extensions),因为它可能更贴近我的问题领域。 我编写的代码很多,许多客户端通过Tcp连接到我的应用程序,然后启动双向(异步)通信。客户端或服务器可以随时决定是否需要发送消息,所以这不是您的经典request/response设置,而是更多的实时,双向,“线路”开放给双方以发送他们想要的任何内容,只要他们想要。(如果有人用一个得体的名字来形容这一点,我将很高兴听到它!)。 每个应用程序的“协议”有所不同(并且与我的问题并不相关)。我确实有,但是有一个最初的问题: 假设只有一个“服务器”正在运行,但是它必须跟踪许多(通常是数千个)连接(例如客户端),每个连接都有(由于缺乏更好的描述)自己的“状态机”来跟踪其内部状态等,您更喜欢哪种方法?EAP / TAP / APM?RX甚至可以考虑吗?如果没有,为什么? 因此,我需要使用Async,因为a)它不是请求/响应协议,所以我不能在“等待消息”阻止调用或“发送消息”阻止调用中使用线程/客户端(但是,如果发送是仅阻止该客户端,我可以忍受它)b)我需要处理许多并发连接。我看不到使用阻塞调用(可靠地)执行此操作的方法。 我的大多数应用程序都与VoiP相关;无论是来自SIP 科学家的 SIP消息,还是来自FreeSwitch / OpenSIPS等应用程序的PBX(相关)消息,但是您可以以最简单的形式尝试想象一个“聊天”服务器尝试处理许多“聊天”客户端。大多数协议都是基于文本的(ASCII)。 因此,在实现了上述技术的许多不同排列之后,我想通过创建一个对象来简化我的工作,该对象可以简单地实例化,告诉它在哪IPEndpoint听,并在发生任何感兴趣的事情时告诉我(通常我通常会这样做)使用事件,因此通常将某些EAP与其他两种技术混合使用)。该类不应费力尝试“理解”协议。它应该只处理传入/传出的字符串。因此,我着眼于RX希望(最终)可以简化工作,我从头开始创建了一个新的“小提琴”: using System; using System.Collections.Concurrent; using System.Net; using System.Net.Sockets; using System.Reactive.Linq; using System.Text; class Program { static void Main(string[] args) { var f = new …
25 c#  .net  tcp 

2
多人游戏使用TCP还是UDP?
我经常看到这个问题。多数人说,UDP对于实时游戏总是比TCP更好。我的理解是,TCP会尝试一遍又一遍地重新发送数据包,直到对方得到它们为止,而UDP则不在乎。 我读过的大部分内容是,任何实时游戏都必须使用UDP,而TCP则很糟糕。但问题是,无论如何,大多数人似乎还是在UDP之上实现了某种形式的TCP。而且我还听说,由于我们已经不在80年代了,而且互联网现在相当快速且可靠,因此两者之间的差异可以忽略不计。 我的一般理解是否错误?有人可以帮我清理一下吗?

12
了解无状态互联网[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我正在从桌面开发人员过渡到Web开发人员,并且无法理解为什么HTTP是无状态的。原因是什么?像我这样的桌面开发人员可以通过哪些方式过渡到无状态开发环境?
15 internet  tcp  http 


2
比较TCP / IP应用程序与HTTP应用程序[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 我对开发使用Java编写的面向用户的大型网站感兴趣。 至于设计,我正在考虑开发独立的模块化服务,这些服务可以作为我的主要Web应用程序的数据提供者。 至于编写这些模块化服务(数据提供程序),我可以利用现有的框架(如Spring)并按照RESTful设计模式开发这些服务,并通过HTTP和消息格式(如JSON)公开资源...或者我可以利用现有的网络像Netty这样的框架(http://netty.io/)和像Protobufs这样的序列化格式(https://developers.google.com/protocol-buffers/docs/overview),并开发一个TCP服务器来来回发送序列化的protobuf有效载荷。 您何时应选择一个?使用Protobufs之类的序列化格式并通过网络发送字节流会有任何好处吗?仅使用JSON会产生开销吗?使用TCP / IP和使用HTTP之间有多少开销?什么时候应该使用Spring over Netty来建立这样的服务,反之亦然?
13 java  rest  http  serialization  tcp 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.