草庐IT

network-provided

全部标签

networking - tcp程序无法监听80端口

我写了一个简单的tcp服务器程序,让它监听80端口然后我注意到netstat-tulpn|grep"tcp"tcp服务器监听端口改为随机端口,不是80我尝试了其他端口,比如2000,tcp服务器程序运行良好,可以监听该端口但是80是不可能的我检查了是否有其他进程在监听80端口,本来有一个httpd,但我杀了它而且我的tcp服务器仍然无法在端口80上监听我试了几台机器,现象都一样这有什么原因吗?以及如何让我的程序监听80端口? 最佳答案 低于1024的端口被限制。如果您只是玩玩,以root身份运行程序很容易,但是如果您出于安全原因想要

networking - UDP 或 HTTP over TCP/IP 用于简单的多人游戏

我正在构建一个多人游戏,玩家会同时被问到一个问题,他们必须选择一个答案。他们有几秒钟的时间来回答,当时间到了或每个人都回答完时,他们会被问到下一个问题。我计划在服务器端使用Java(或者nodeJS,如果我想学习一个新框架),在客户端使用JS(jQuery和jQueryMobile)。我以后也可能会构建native应用程序,所以我想保持该选项处于打开状态。我的问题是:您建议使用哪种服务器通信协议(protocol)?我正在考虑常规TCP(带有Ajax的HTTP)调用,因为延迟并不是真正的问题,但如果您提出其他建议,我准备好审查这个选择。非常感谢您的帮助 最佳

networking - 无数据时TCP断开

我查了TCP协议(protocol)的wiki,没发现长时间没有数据传输socket连接会不会超时。我的意思是..不会有物理问题,但两台计算机将有一段时间没有数据可以相互发送。怎么连接还会存在?是否会有一些低级数据传输来帮助它了解它没有损坏?谢谢!对不起,如果问题很愚蠢.. 最佳答案 没有数据通过网络发送来维持TCP连接。您可以简单地通过发送()来自任一对等方的零字节数据包来发送网络层保持事件状态,或者启用套接字选项以使操作系统定期为您发送它们。在我看来,应用层保持事件(您的应用程序协议(protocol)对其进行管理)提供比传输层

networking - TCP连接建立中的两军问题

是twoarmyproblem在TCP连接建立中也看到了吗?我确定这是为了TCP连接释放,但我不确定是否建立。如果有人能验证,那就太好了。谢谢。 最佳答案 这不是同一个问题,主要是因为关闭其中一个段应该是最后一个段,所以确认是不够的,你必须使用定时器来决定是否一个阶段已经结束(你知道那些阶段),所以你可以决定你必须重新发送一个connectioncloserequest只是关闭连接,因为自第二个以来已经过去了太多时间已发送连接关闭请求。另一方面,打开连接时不会有lastsegment因为会有后面的数据段,所以只需要重新发送丢失的连接

networking - 如何控制peer上的socket[TCP Hole Punching]

我有一个使用TCP连接进行通信的服务器-客户端程序。多个客户端可以同时连接到服务器。我想在这个系统上实现tcpholepunching。在客户端,它调用公共(public)服务器来查找我的服务器的公共(public)ip、端口。然后连接到它。但是在服务器端它必须打开一个端口来连接到公共(public)服务器,并且它还必须在同一个端口上接受客户端连接请求。我要做的是打开一个套接字并绑定(bind)到端口X,然后连接到公共(public)服务器,然后将这个套接字更改为监听状态以接受传入连接一段时间,然后开始连接到公共(public)服务器一次又一次。这是正确的方法吗?编辑:我有另一个想法。

networking - 读写 UDP 连接的套接字?

我们正在尝试让两个程序以类似游戏的方式相互通信。它们与中央服务器保持TCP连接以获取“控制”类型的信息,该中央服务器确保两个客户端都接收到这些信息。然后,这两个客户端使用sendto()和recvfrom()与udp服务器通信,后者仅将接收到的信息发送到连接的其他客户端。现在的问题是,如果你有家庭路由器或私有(private)办公网络,发往其他客户端的udp服务器sendto()将被防火墙过滤掉,除非你打开了一个端口,这更比我们希望客户做的还要多。但我不想失去UDP的好处—我不关心数据包丢失和顺序。我愿意自己管理所有这些。那么,我能否可靠地创建一个读写连接的UDP套接字?我记得在过去尝

networking - 自定义 TCP 服务中缓冲区使用和调整的一些技巧是什么?

我最近一直在研究许多网络库和框架,例如libevent、libev、FacebookTornado和Concurrence(Python)。我在他们的实现中注意到的一件事是使用应用程序级别的每个客户端读/写缓冲区(例如Tornado中的IOStream)——甚至HAProxy也有这样的缓冲区。除了这些应用程序级缓冲区之外,还有操作系统内核TCP实现的每个套接字缓冲区。我可以理解应用程序/库对读取缓冲区的使用,我认为:应用程序/库从内核缓冲区读取到应用程序缓冲区,然后应用程序对数据执行某些操作(例如反序列化其中的消息)。但是,我对写缓冲区的需要/使用感到困惑。为什么不只写入内核的发送/写

networking - Google Chat 服务器如何向数亿客户端推送通知?

考虑一个Web应用程序,例如GoogleChat,其中的服务器同时为数亿个客户端提供服务。在此类应用程序中,服务器必须近乎实时地向客户端推送通知(在聊天示例中-传入消息、状态通知等)。他们是如何实现的?很大一部分客户端是基于浏览器的。我想轮询甚至会使Google的服务器重载。那么,他们使用的是Comet之类的东西吗?如果是这样——他们是否需要为每65536个客户端分配一个服务器(每台机器的最大TCP连接数)?我知道有一种方法可以circumstance这个限制,但我不知道它是如何实现的。 最佳答案 聊天不是由单个应用程序/硬件/实例

networking - 移动网络方面的持久 TCP 连接?

我对移动连接中的WebSocket通信有疑问。我想知道当用户在不同网络之间迁移时,如何在移动网络中长时间处理长期存在的TCP连接。当发生切换(hand-off)时,已经建立的TCP连接会怎样?在这种情况下,不同技术(3G、4G等)的表现是否不同?如果你能留下一些在线资源或文章,我将不胜感激,我可以在这方面阅读更多内容?提前谢谢你:) 最佳答案 切换对用户始终是透明的——在LTE、UMTS等商业移动网络上的塔之间转换时,所有TCP和语音连接始终保持事件状态。您可能会遇到数据停止的某些时间段流动,但仅此而已。通过在T-MobileUSA

networking - 仅使用 NAK 的数据传输协议(protocol)如何可靠?

我一直在学习计算机网络方面的书(这不是作业题)其中一个问题比较了基于ACK和NAK的数据传输协议(protocol),重点是对于基于NAK的协议(protocol),当接收到第(x+1)个数据包时,接收方可以检测到数据包x的丢包.但是,我的问题是,如果接收方发送的NAK在到达发送方之前丢失了,会发生什么情况?发件人不会意识到错误,也不会重新传输。此外,如果数据包是序列中的最后一个数据包怎么办?(没有后续数据包可以测试)我看不出只有NAK的协议(protocol)如何可靠(以正确的顺序传送每个数据包) 最佳答案 我怀疑书中描述的理论背