问题标签 [lidgren]
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.
c# - lidgren/XNA 如何使用 DiscoverLocalPeers 返回 IP
我想使用lidgren在XNA 4.0中创建一个服务器/客户端游戏,客户端可以列出可用的服务器/主机并选择要加入的服务器。
我如何使用 DiscoverLocalPeers 或 Client.DiscoverLocalPeers(40012);函数返回发现的服务器列表。我假设该函数使用相同的端口查找可用服务器,但我想列出使用该端口的可用服务器,以防有多个服务器。有可能还是我对功能的理解错误。
您的帮助将不胜感激
c# - 与服务器建立新连接时收到通知
我正在使用Lidgren 库来通过网络传递字符串 throw 计算机。当客户端与服务器断开连接时我可以收到通知,但当客户端连接时我不能。我尝试在不同的线程中运行这段代码:
con
旧的连接数在哪里。我得到的唯一输出是0.0.0.0 connected
在新连接的客户端发送消息之后。为什么这不起作用?在建立新连接时如何获得通知?
client - C# XNA Lidgren 客户端错误地接收消息
我正在尝试用 Lidgren 制作一个简单的服务器和客户端。服务器是一个 C# 控制台应用程序,客户端是使用 XNA 制作的。问题是当客户端从服务器接收到一条消息时,当它读取 2 个浮点数时,即使它们不是这样发送的,它也会将它们读取为 0(我假设)。
服务器:http ://pastebin.com/s2cmBUf3 客户端:http: //pastebin.com/nrU7KFs8
c# - 从服务器连接 Lidgren 中的对等点
我想建立一个 P2P 配对服务器。情况如下:
- 我在 NAT'd 路由器后面有 2 个以上的对等方。
- 我在静态 IP 上的端口转发路由器后面有一台服务器。
- 服务器的工作是注册每个对等点的联系信息,并在请求时将其发送给任何其他对等点。
- 然后,对等点可以向服务器查询其他人的列表,并直接连接到他们。
目前,对等点可以连接到服务器,注册他们的地址,并查询其他对等点的地址。我的问题是互相介绍同行。
我目前正在像这样获取每个对等方的内部和外部 IP 地址。它主要基于 Lidgren 附带的主服务器示例;但是,这只是将用户连接到客户端/服务器会话,而我需要点对点。
当服务器收到请求时,或者当对等点注册到服务器时,它会从连接消息中获取该对等点的外部 IP。然后,在处理请求时,我们可以从两个对等方访问两个 IP:
现在,问题是如何使用此信息(或建立连接所需的任何其他信息)将对等点相互连接,因为其他基础设施已经运行。
我的第一次尝试是使用内置的 Introduce 方法:
这似乎在某种程度上起作用,但它连接到每个客户端上的服务器连接而不是对等连接,并且只在发送方上成功。
尝试手动连接发送的 IP 会导致无休止的“尝试连接”消息:
最后,我看到的 IP 示例是从服务器转储的:
我认为问题在于对等连接的外部端口是沿线路某处随机创建的,而不是使用我在创建它时指定的端口。因此,它不能提前转发。我会很高兴用户被要求转发特定端口,因为许多 P2P 游戏都是这样工作的。
换句话说,我似乎拥有使 NAT 穿孔正常工作所需的一切,但我缺乏 Lidgren 的知识来实现它。
最后,这是我设置 peer_client 的方式:
c# - Lidgren 的通用数据包系统
我正在使用 Lidgren.Networking 在客户端/服务器架构中的服务器和客户端之间发送数据。我创建了一个 Packet 类,以便在通过网络发送数据包时使用。
数据包.cs
IPackable.cs
然后我有这样的应用程序特定数据包类
发送数据包很容易,我只需创建一个数据包和 PackIntoNetMessage(msg) 然后发送它。但是当我尝试接收数据包时,我遇到了一些烦人的结构问题。
我从读取第一个字节开始
但是然后我必须为每种数据包类型进行一个切换,以便获得正确的构造函数。
这是我不喜欢的部分。我希望能够制作一个通用的数据包处理系统来处理派生自 Packet 的任何类。我想反射不是一个好主意,因为它会破坏性能。我应该如何构建它以使其更通用?
c# - Lidgren 向客户端发送消息(绕过重载服务器)
我在 Unity 中遇到网络流量问题。可以使大部分流量在客户端(在游戏中彼此靠近,因此需要额外的细节)之间传输,以减少服务器负载。然而,问题是 Unitys 内置的网络无论如何都会通过服务器路由所有内容。
我刚刚集成了 Lidgren DLL,希望这个网络库有解决方案?我可以在客户端和一些服务器之间直接发送流量吗?(无论如何都不会在后台通过服务器路由)
谢谢
vb.net - 类中的新属性?
好吧,我的问题很简单。
我想将属性添加到预定义的类。
需要添加“index”属性,使其为“Clients(sender).Index”
c# - 网络问题,可以用异步方法解决吗?
我正在学习使用网络库 Lidgren。我试图让一个基本的客户端/设置服务器运行,但我收到了一个错误。到目前为止,我只有服务器,当我运行它时,服务可能会运行 10 秒,然后崩溃,但Lidgren.Network.NetException
. 如果我删除第一个循环,则不会发生这种情况while
,该循环旨在继续检查消息。有关异常的附加信息是:Additional information: Trying to read past the buffer size - likely caused by mismatching Write/Reads, different size or order.
谁能帮我这个?另外,我是否可以通过尝试异步读取消息来避免这种情况,如果是这样,我将如何做到这一点?
c# - C# Lidgren 库 - 发送玩家数据
我目前正在编写一个多人游戏的面向对象游戏。播放器继承自实体,当我通过发送当前播放器属性时
NetOutgoingMessage outmsg = Server.CreateMessage();
[...]
outmsg.WriteAllProperties(p);
其中 p 是我的播放器对象,我的客户只接收在我的播放器类中声明的属性,而不是从实体类中声明的属性。因此我的客户无法更新玩家位置等。
有什么建议吗?
编辑:
它识别继承的对象,但不能正确发送它们。我想我可能需要使用一些 Bindingflags,因为它有一个选项,并且应该可以发送分配给玩家的对象。我正在使用 Vector2 类来指定播放器的位置和速度,但我的客户端要么无法接收 Vector2 类,要么服务器无法发送它。如果我使用整数、字符串、布尔值或任何它可以工作的东西,但不适用于自定义类。
c# - 从 Lidgren 的某个客户那里读取消息
我正在与 Lidgren 一起设置游戏,我想知道是否有办法从某个客户端读取消息,而不仅仅是从整个服务器读取消息,例如-
这样我就可以将来自每个客户端的读取数据拆分到它自己的线程中,并有一个单独的线程用于向每个客户端发送数据。目前我的服务器中只有一个循环,它读取数据包,我担心一个客户端比其他客户端更偏爱,因为玩家做出的一些动作需要一段时间才能被其他玩家接收。我相信分别从每个客户那里阅读消息可以解决这个问题。使用简单的 TcpClients,您可以从每个客户端的流而不是整个服务器中读取,我喜欢这个功能,但也依赖于通过 Lidgren 发送数据包的简单性,并且想知道 Lidgren 是否有类似的功能。