Tag: networking

如何设置TcpListener始终侦听和接受多个连接?

这是我的服务器应用程序: public static void Main() { try { IPAddress ipAddress = IPAddress.Parse(“127.0.0.1”); Console.WriteLine(“Starting TCP listener…”); TcpListener listener = new TcpListener(ipAddress, 500); listener.Start(); while (true) { Console.WriteLine(“Server is listening on ” + listener.LocalEndpoint); Console.WriteLine(“Waiting for a connection…”); Socket client = listener.AcceptSocket(); Console.WriteLine(“Connection accepted.”); Console.WriteLine(“Reading data…”); byte[] data = new byte[100]; int size = client.Receive(data); Console.WriteLine(“Recieved data: […]

Unity3D。 试图在没有权限的情况下发送对象的命令

我有一个多人回合制战略游戏,需要一个游戏经理,控制当前的游戏状态(轮到谁了)。 这个管理器应该对每个客户端都是通用的,它的状态应该在服务器上同步。 以下是我这样做的方法:游戏管理器对象是NetworkBehaviour,它具有NetworkIdentity,它不是本地玩家权限,也不是服务器权限。 我已经制作了一个自定义的NetworkManager,它在客户端连接上生成游戏管理器,也测试它是否是服务器。 这是一个代码: public override void OnClientConnect(NetworkConnection conn) { ClientScene.Ready(conn); if (NetworkServer.active) { var manager = Instantiate(MultiplayerManagerPrefab, Vector3.zero, Quaternion.identity) as GameObject; var tacticsManager = manager.GetComponent(); NetworkServer.RegisterHandler(MsgType.AddPlayer, tacticsManager.CreatePlayerOnServer); NetworkServer.Spawn(manager); } ClientScene.AddPlayer(0); } 当我在服务器上运行它时它工作正常,它在客户端上创建一个实例并同步从服务器到客户端的变量。 但是,当我尝试从客户端运行命令时,它会忽略它们,抛出此警告: 试图在没有权限的情况下发送对象的命令。 UnityEngine.Networking.NetworkBehaviour:SendCommandInternal(NetworkWriter,Int32,String) 请注意,此游戏管理器是在任何玩家之前生成的,因为它必须负责产生玩家。 我究竟做错了什么?

使用c#“UDP打孔到防火墙”将端口X的流量从端口X转发到计算机B

我需要建立从家用计算机到办公室计算机的TCP连接。 在办公室有一台路由器连接了几台计算机。 该路由器具有互联网,因此连接到该路由器的所有计算机也具有互联网。 在我的房子里我有一台可以上网的电脑。 我需要我的办公室电脑作为服务器和我的家用电脑连接到它。 之前,我曾经能够通过端口转发服务器上的流量连接: NATUPNPLib.UPnPNATClass upnpnat; NATUPNPLib.IStaticPortMappingCollection mappings; public ServerExample() { InitializeComponent(); upnpnat = new NATUPNPLib.UPnPNATClass(); mappings = upnpnat.StaticPortMappingCollection; // server local IP address mappings.Add(1300, “TCP”, 1300, “192.168.150.146”, true, “plsease work”); // this code tels the router to forward all tcp traffic comming from port // 1300 to the server computer (it’s lan […]

如何在c#中禁用/启用网络连接

基本上我正在运行一些性能测试,并且不希望外部网络成为阻力因素。 我正在研究禁用网络局域网的方法。 以编程方式执行此操作的有效方法是什么? 我对c#感兴趣。 如果有人有一个代码片段可以驱动点回家很酷。

在机器上获取所有IP地址

如何获取运行我的应用程序(C#NET控制台应用程序)的计算机上连接的所有IP地址? 我需要将WCF服务绑定到主IP地址,并返回完整IP地址列表的列表。 using System.Net; string myHostName = Dns.GetHostName().ToString(); string ipAddress = Dns.Resolve(HostName).AddressList[0].ToString(); 这就是我现在使用的获取主IP地址,但我无法弄清楚如何让其余的返回它们。 如果我将WCF服务绑定到localhost:8000,是否会在主服务器上公开它?

如何确定实际物理网卡的MAC地址 – 而不是VPN创建的虚拟网络接口(.NET C#)

背景 我试图从计算机中获取唯一的标识符,并希望每次都可以可靠地返回相同的MAC地址。 相信我,我有使用MAC地址的原因,并阅读了许多关于备用唯一ID方法的post(是的,如果他们没有任何网卡,我会考虑)。 问题 问题出在.NET中我无论如何都没有看到特定的NetworkInterface是否是来自“Nortel IPSECSHM适配器 – 数据包调度程序微型端口”的物理硬件网卡,当您连接到某些VPN或WiFi网络时会添加它。 我知道如何通过使用类似于此的代码获取Mac地址: foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { log.Debug(“NIC ” + nic.OperationalStatus + ” ” + nic.NetworkInterfaceType + ” ” + nic.Speed + ” ” + nic.GetPhysicalAddress() + ” ” + nic.Description); } 可以理解的是,没有100%的方法可以确保我获得内部网卡但是我想选择MAC地址来返回哪个最不可能改变的给定机器 。 独立于诸如以下因素 – 无论是否连接到wifi ……通过某种类型的系绳连接进行连接……或者他们安装了一些新的vpn软件,增加了新的界面。 考虑的策略 1)选择第一个“Up”界面。 这在我的笔记本电脑上失败,因为“Packet Miniport”总是在运行。 此外,如果我将手机连接到笔记本电脑,这也会显示为第一张卡。 2)选择最合适的类型…这个失败b / c基本上所有东西都显示为“以太网”,包括WiFi适配器和我的iPHone网络连接。 3)选择具有IP地址的NIC。 […]