Tag: 客户端 服务器

C#字节流通过TCP

我是一名小工程师,希望能在这里找到所有有经验的人提出的建议。 我被分配了一个项目来创建一个通过TCP进行字节流的服务器/客户端应用程序。 我们公司通过GPS和调度软件处理带有GPS的双向无线电,我们希望用它来制作服务器/客户端应用程序。 目前,调度软件可以连接到用户必须在的中央基站,但我们希望从远程位置访问该软件(如果基站距离调度员可以在几英里外的中继站) )。 用户/客户端 – >轮询麦克风的位置 – >服务器 – >基站 – > OTA信号 – >无线电和返回 我一直在关注Windows Communication Foundation,但有什么其他方法可以解决这个问题? 我将主要使用C#/ .NET / Visual Studio 2008

不断监控流程

我编写了一些监视正在运行的Windows进程的代码。 我想知道某个过程何时开始以及何时结束。 代码就像我想要的那样工作。 现在,我希望在Windows窗体服务器应用程序中实现它 – 所以只要表单处于活动状态,它就会在循环中运行。 我想我应该让它可以使用BackgroundWorker异步运行。 我只是不确定最好的方法是什么以及如何做到这一点。 这是我的监视器代码: using System; using System.Management; using System.Diagnostics; using System.Collections.Generic; using System.ComponentModel; class ProcessMonitor { public static void Main() { Dictionary newProcs= new Dictionary (); while (true) { foreach (Process process in Process.GetProcesses()) { if (process.ProcessName.CompareTo(“Someprocess”) == 0) { if (!searchForProcess(newProcs, process.Id)) { ManagementObjectSearcher searcher = new ManagementObjectSearcher(“SELECT […]

UWP应用程序不从localhost上的.NET桌面应用程序接收UDP数据报

我一直在尝试在作为客户端的UWP应用程序和作为服务器的.NET桌面应用程序之间设置客户端服务器。 我正在使用UDP Datagrams作为两者之间的消息传递系统。 这是我的UWP代码,用于在端口22222上侦听localhost IP上的Datagrams: private async void listenToServer() { // Setup UDP Listener socketListener = new DatagramSocket(); socketListener.MessageReceived += MessageReceived; await socketListener.BindEndpointAsync(new HostName(“127.0.0.1″),”22222”); Debug.WriteLine(“Listening: ” + socketListener.Information.LocalAddress + ” ” + socketListener.Information.LocalPort); } private async void MessageReceived(DatagramSocket sender, DatagramSocketMessageReceivedEventArgs args) { // Interpret the incoming datagram’s entire contents as a string. uint stringLength = […]

如何禁用打开文件 – 安全警告

我有一个奇怪的问题。 我编写了一个winform服务器应用程序和一个winform客户端应用程序。 客户端的作用是将用于运行某个脚本的命令发送到服务器。 服务器接收这些命令,解析它们并运行它们。 这两个工作很棒。 我编写了一个cmd应用程序,它使用了我客户端的一些function。 该应用程序应该用作cmd客户端。 问题是:当我运行winform客户端时,服务器运行命令完全没有问题。 当我运行cmd客户端时,当服务器尝试执行收到的命令时,服务器端的Windows会弹出是否可以运行脚本的安全问题(请参阅附图)。 为什么会在cmd上发生,而不是在winforms上发生。 这是我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Win32; using System.Net.Sockets; using System.ComponentModel; using System.IO; using System.Management; namespace RemoteBatcher { class ClientCmdProgram { private static RegistryKey registryKey; private static Socket clientSock; private static string remoteIpAddress = “192.168.0.1”; private static int remotePort = 8; […]

如何允许服务器接受SSL和纯文本(不安全)连接?

我正在尝试创建一个可以接受安全SSL和不安全的纯文本连接的服务器(为了向后兼容)。 我的代码几乎正常工作,除了从不安全客户端收到的第一个传输数据丢失了服务器上的前5个字节(字符)。 更具体地说,如果我在不安全的连接上传输30个字节,当服务器到达OnClientDataReceived()函数时,行“ int iRx = nwStream.EndRead(asyn); ”,则iRx = 25 。 从客户端发送的任何后续消息都包含所有发送的字节/字符。 我怀疑连接的初始假设是SSLStream可能正在剥离前5个字节,然后当它失败时,这5个字节已经从缓冲区中提取出来并且不再可用。 有没有人知道我可以采取另一种方法来编写代码,以便服务器能够自动切换? 我试图避免做以下事情: 要求客户端使用纯文本NetworkStream连接,然后请求升级到SSL流 在两个不同的端口上设置两个TcpListeners (一个用于安全,一个用于不安全) 这是我的代码: /// Each client that connects gets an instance of the ConnectedClient class. Class Pseudo_ConnectedClient { //Properties byte[] Buffer; //Holds temporary buffer of read bytes from BeginRead() TcpClient TCPClient; //Reference to the connected client Socket ClientSocket; //The […]

Socket单客户端/服务器连接,服务器可以多次发送,客户端只能发一次

我编写了一个客户端和服务器应用程序,我需要用它来连接我用C#制作的跳棋游戏。 我有连接的客户端和服务器,服务器可以重复发送客户端消息来更新标签但是当客户端尝试发送消息时它会抛出错误 “由于没有连接套接字而且(当使用sendto调用在数据报套接字上发送时)没有提供地址,因此不允许发送或接收数据的请求。” 到目前为止,这是我的客户端和服务器。 客户 – public partial class Form1 : Form //main form that establishes connection { Form2 form2 = new Form2(); Socket sck = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); Socket acc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); IPEndPoint endPoint; static byte[] Buffer { get; set; } string text; public Form1() { InitializeComponent(); } private void […]

设置TCP / IP客户端和服务器以通过网络进行通信

我正在尝试学习一些关于套接字编程的知识,我偶然发现了TcpListener和TcpClient,因为我读到它们对于初学者来说稍微容易一些。 我想要完成的基本要点是拥有一个可以在我的笔记本电脑和同一网络上的另一台笔记本电脑上运行的小型表格,以便它们能够进行通信,即相互发送一串文本。 有了这个,我希望能进一步发展:) 到目前为止,我已经使用msdn和互联网上的各种指南创建了客户端和服务器程序。 我可以让他们在一台笔记本电脑上运行时进行通信,但是当我将客户端移动到另一台笔记本电脑时,我无处可去。 我认为我的主要问题是我不太了解客户端如何找到服务器IP,因为我认为我可以硬编码,但当我再次回来时,我确信IP会发生变化。 有没有办法让两者以更动态的方式连接以包含不断变化的IP? 我目前的客户代码: public void msg(string mesg) { lstProgress.Items.Add(“>> ” + mesg); } private void btnConnect_Click(object sender, EventArgs e) { string message = “Test”; try { // Create a TcpClient. // Note, for this client to work you need to have a TcpServer // connected to the same address as […]

通过网络扫描发现服务器IP地址

我将开发C#客户端 – 服务器应用程序,我需要告诉客户端客户端或服务器广播可能发生的服务器IP地址是什么。 任何帮助和解决方案都可能非常有用,如果有一些示例代码,那就更好了! 谢谢。

Unity如何使用NetworkDiscovery从客户端查找服务器

[我在c#工作] 为了确定天气,设备应该成为仅具有本地客户端或客户端的服务器(对于无主服务器的网络),我需要在转向使用本地客户端的服务器之前找出该设备是否还有其他可用服务器。不是通过从服务器接收NetworkDiscovery广播来加入另一个客户端设备 – 目前我无法让客户端从服务器接收广播。 我创建了两个空的游戏对象,每个都有脚本,一个脚本使它成为一个服务器,应该通过NetworkDiscovery.StartAsServer()从其NetworkDiscovery广播,但目前我的客户端的NetworkDiscovery已经设置为NetworkDiscovery.StartAsClient()没有得到OnRecievedBroadcast()函数被调用因此不接收来自服务器的广播。 下面显示的两个脚本是客户端和服务器: 客户 – using UnityEngine; using System.Collections; using UnityEngine.Networking; public class SearchForServers : MonoBehaviour { bool serverIsFound; NetworkDiscovery NetworkDiscovery; // Use this for initialization void Start () { serverIsFound = false; NetworkClient Client = new NetworkClient(); NetworkDiscovery = gameObject.AddComponent(); NetworkDiscovery.Initialize(); NetworkDiscovery.StartAsClient(); } void OnRecievedBroadcast(string fromAdress, string data) { serverIsFound = […]

如何在C#中获取服务器和客户端之间的延迟?

我正在为我在ActionScript 3中编写的游戏引擎开发C#Server应用程序。我正在使用权威的服务器模型来防止作弊并确保公平游戏。 到目前为止,一切运作良好: 当客户端开始移动时,它会告诉服务器并在本地开始渲染; 然后,服务器告诉其他人客户端X已开始移动,其中包含详细信息,以便他们也可以开始渲染。 当客户端停止移动时,它会告诉服务器,该服务器根据客户端开始移动的时间执行计算,并且客户端呈现滴答延迟并回复所有人,因此他们可以使用正确的值进行更新。 问题是,当我在服务器计算上使用默认的20ms滴答延迟时,当客户端移动相当长的距离时,当它停止时会有明显的向前倾斜。 如果我将延迟略微增加到22ms,在我的本地网络上一切都运行得非常顺利,但在其他地方,倾斜仍然存在。 经过一番实验后,我注意到所需的额外延迟几乎与客户端和服务器之间的延迟有关。 我甚至把它煮成了一个非常好的公式:延迟= 20 +(延迟/ 10)。 那么,我将如何继续获取某个客户端和服务器之间的延迟(我正在使用异步套接字)。 CPU的工作量不能太大,因为没有服务器运行缓慢。 此外,这真的是最好的方式,还是有更有效/更简单的方法来做到这一点?