问题标签 [sockets]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sockets - 实现实时多人游戏存在哪些问题
我有一些使用套接字制作多人回合制游戏的经验,但我从未尝试过实时动作游戏。我需要处理哪些额外的问题?我是否需要保留玩家行为的历史记录,以防落后玩家过去做某事?我真的需要使用 UDP 数据包还是 TCP 就足够了?还有什么?
我还没有真正决定要制作什么,但出于这个问题的目的,您可以考虑一个 10 人 2D 游戏与 XY 运动。
c# - 从 C# 客户端向 Java 服务器发送一个 4 字节的消息头
我正在尝试将 C# 客户端写入用 Java 编写的服务器。服务器需要一个 4 字节(Java 中的 DataInputStread readInt())消息头,后跟实际消息。
我对 C# 完全陌生,如何将此消息头发送到 Java 服务器?我尝试了几种方法(主要是在没有深入了解 C# 语言的情况下反复试验),但没有任何效果。Java 端的消息长度不正确(非常大)。
python - Python 套接字突然超时?
我今天回到了一个通过 SSL 登录 Gmail 的旧脚本。该脚本在我上次运行它时运行良好(几个月前),但现在它立即死亡:
如果我设置超时(无论多长时间),它会立即死亡:
后者可通过以下方式重现:
返回:
但我似乎无法重现前者,并且在通过代码进行了很多步骤之后,我不知道是什么原因造成的。
java - 如何根据 Java 中的 URLConnection 对 BufferedReader 设置超时?
我想阅读 URL 的内容,但不想在 URL 无响应时“挂起”。我使用 URL 创建了一个 BufferedReader ...
...然后开始循环读取内容...
...但是如果读取挂起,则应用程序挂起。
有没有办法在不将代码磨到套接字级别的情况下,在必要时“超时”读取?
unix - AF_UNIX 本地数据报套接字的自动命名?
我正在使用 unix 本地套接字(AF_UNIX 地址系列,即不是 UDP)上的数据报实现一个简单的服务。服务器绑定到一个公共地址,它接收请求就好了。不幸的是,在回复时,sendto
除非客户端也被绑定,否则会失败。(常见的错误是Transport endpoint is not connected
)。
绑定到一些随机名称(基于文件系统或抽象)有效。但我想避免这种情况:我是谁来保证我选择的名字不会发生冲突?
unix 套接字的流模式文档告诉我们,connect
如果它们还没有抽象名称,那么它们将在时间分配给它们。这样的功能可用于面向数据报的套接字吗?
linux - 像 ping、ssh 这样的 Unix 命令可以正常工作,但基于套接字的程序无法连接
我接到一个测试员的电话,说一台机器出现了我们的软件故障。当我检查问题机器时,我很快意识到问题是相当低级的:入站网络流量工作正常。像 ping 和 ssh 这样的基本出站命令工作正常,但任何涉及connect()
调用的操作都因“没有路由到主机”而失败。
例如 - 在这台特定的机器connect()
上,该程序将在以下任何 IP 地址的语句上失败127.0.0.1
:
关于这台机器坏在哪里的任何建议?它正在运行 SUSE-10.2。
sockets - 将时间与机器之间的毫秒精度和精度同步的最佳方法是什么?
据我了解,PC 上的晶体因时钟偏差而臭名昭著。如果时钟总是倾斜,那么以毫秒精度和精度在机器之间同步时钟的最佳方法是什么?根据我的发现,NTP 和 PTP 是可能的解决方案,但我想知道是否有人对 stackoverflow.com 有任何经验!
我知道 NTP 是流行的选择,但我想知道是否有人对 PTP (IEEE1588) 有任何经验
java - 如何让套接字仅接受来自本地主机的连接(在 Java 中)?
我有一个 java 应用程序(不在任何应用程序容器中运行),它在 ServerSocket 上侦听连接。我希望它只接受来自本地主机的连接。目前,在接受连接后,它会检查对等 IP,如果它不是环回地址,则拒绝它,但我知道对等 IP 地址可以被欺骗。所以,如果可能的话,我宁愿绑定到一个只监听环回接口的套接字;这可能吗?
我尝试了一些不同的方法(例如在调用 bind() 时将“127.0.0.1”指定为本地地址),但都没有成功。提前致谢。
谢谢大家的帮助。我很尴尬地承认这都是我的错。我们的应用程序监听两个不同的端口,我将一个绑定到环回接口,但对另一个进行测试。当我真正尝试远程登录到正确的端口时,一切正常(即绑定到“127.0.0.1”完全符合它的预期)。
至于欺骗环回地址,你们是对的。我不应该让它听起来像主要关注点。确实,所需的行为是只接受本地连接,并且只绑定到本地接口是一种比接受所有连接然后关闭非本地连接更直接的方法。
sockets - 无法实现 1Gbit UDP 吞吐量
对于有效载荷小于 1470 的 UDP 数据包,是否有可能实现 1Gbit 吞吐量?由于数据包较小,在实现这种吞吐量(I/O、操作系统、网络等)方面应该存在一些瓶颈。我想驱动程序和硬件可能必须调整为小数据包/高吞吐量。有没有人尝试过使用小型 UDP 数据包成功实现 1Gbit 吞吐量?
c# - 可扩展的套接字事件队列处理
我的 C# 类必须能够处理通过 tcp 流式套接字连接接收到的大量事件。类的套接字从 tcp 服务器接收到的事件消息的数量是完全可变的。例如,有时它会在 10 秒内只收到一条事件消息,而有时它会在一秒钟内收到 60 条事件消息。
我正在使用 Socket.ReceiveAsync 接收消息。如果接收操作处于未决状态,则 ReceiveAsync 返回 true;如果线路上已有数据且接收操作同步完成,则返回 false。如果操作挂起,Socket 将在 IO 完成线程上调用我的回调,否则我在当前 (IOC) 线程中调用我自己的回调。此外,与事件消息混合,我还收到对发送到此 tcp 服务器的命令的响应。立即处理响应消息;单独地,通过解雇一个线程池工作者。
但是,我想对事件消息进行排队,直到我有“足够”(N)个事件消息,或者直到网络上没有更多消息……然后启动线程池工作程序来处理一批事件消息。此外,我希望按顺序处理所有事件,因此我只希望一个线程池工作人员一次处理此问题。
事件消息的处理器只需将消息缓冲区复制到一个对象中,引发一个事件,然后将消息缓冲区释放回环形缓冲区池。所以我的问题是......你认为实现这一目标的最佳策略是什么?
您需要更多信息吗?让我知道。谢谢!!