c# - 本地连接但不通过网络连接的客户端服务器(服务)应用程序
问题描述
我在 C# 中创建了一个 Windows 服务服务器程序,它将从串行端口接收数据消息,然后将这些消息发送到已连接到服务器的任何客户端。我还用 C# 开发了客户端程序(Windows 窗体)。
最初,服务器程序被开发为控制台应用程序,以使开发更容易。在将服务器作为控制台应用程序运行时,与客户端的连接运行良好,我可以在与服务器相同的 PC 上运行客户端,也可以在连接到同一网络的笔记本电脑上连接客户端。
连接方法是: -client 启动 -client 向特定端口广播 (udp) -server 响应 UDP 广播 -client 使用从 UDP 响应中获得的 IP 地址与服务器发起 TCP 连接
由于将服务器从控制台应用程序更改为 Windows 服务,我无法再使用此方法将笔记本电脑上运行的客户端程序连接到服务器。与服务器在同一台机器上运行的客户端程序连接成功。谁能提供一些关于调查什么的建议?
解决方案
为了解决我遇到的问题,我在运行服务器服务应用程序的机器的防火墙设置中添加了一条新规则。我允许传入连接使用的端口,这为我解决了这个问题。
我还更改了网络发现程序:
- 服务器每秒向一个端口广播 (UDP)
- 客户端等待来自服务器的广播数据包
- 客户端使用从广播包中获取的 IP 地址与服务器建立 TCP 连接
推荐阅读
- html - Bootstrap 4.1.2:想要将 Bootstrap 4.1.2 添加到我的项目中,使用包管理器 npm?
- javascript - 在 React 组件中渲染 JSON 数组
- opengl-es - 为什么没有 glBindBuffer 的 glVertexAttribPointer 也可以工作?
- python - PyQt5 QFrame 的实际大小
- selenium - 使用 Selenium webdriver 自动化 IE 时无法从全屏模式切换到最大化模式
- powershell - 如何从 HPC 集群获取完整的作业名称
- c# - 聚类非矩阵字符串数组
- android - NOT NULL 约束失败:Facture.Mode
- r - 如何删除列中的可变字符?
- java - 将编辑文本值从片段传递到活动