通过 TCP 的 C# 字节流

2024-03-24

我是一名初级工程师,希望就如何解决这个问题向这里所有有经验的人寻求一些建议。

我被分配了一个项目来创建一个通过 TCP 进行字节流传输的服务器/客户端应用程序。我们公司处理带有 GPS 和调度软件的 2 路无线电,我们想用它制作一个服务器/客户端应用程序。目前,调度软件可以连接到用户必须所在的中央基站,但我们希望可以从远程位置访问该软件(如果基站通过中继器距离调度员所在的地方数英里远) )。

用户/客户端 -> 轮询麦克风位置 -> 服务器 -> 基站 -> OTA 信号 -> 无线电并返回

我一直在研究 Windows Communication Foundation,但是还有哪些其他方法可以解决这个问题?

我将主要使用 C# / .NET / Visual Studio 2008


我们使用 UDP 将 GPS 更新从汽车发送到处理更新的服务器。在这样的应用程序中(带宽通常有限),您可以真正分辨出 UDP 和瞬时 TCP 连接(如 HTTP)之间的区别(就从远程主机到服务器获取数据所需的时间而言)。 UDP 数据包似乎在一瞬间就到达了目的地,而 TCP 连接的建立非常明显,通常需要几秒钟才能完成。我喜欢 WCF 框架,但如果您的应用程序是我一直使用的那种系统,我怀疑您会对此感到满意(...除非更新之间有很长的间隔是可以的)。

最近,我一直在使用持久 TCP 连接(使用原始套接字),如果您想确保数据包到达目的地,这是一个好方法。但我认为,做到这一点的方法是尽可能长时间地保持连接打开,并合并代码以在连接中断时重新连接。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 TCP 的 C# 字节流 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 通过引用传递 [C++]、[Qt]

    我写了这样的东西 class Storage public Storage QString key const int value const void add item QString int private QMap
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 随着时间的推移,添加到 List 变得非常慢

    我正在解析一个大约有 1000 行的 html 表 我从一个字符串中添加 10 个字符串 td 每行到一个list td
  • 如何连接重叠的圆圈?

    我想在视觉上连接两个重叠的圆圈 以便 becomes 我已经有部分圆的方法 但现在我需要知道每个圆的重叠角度有多大 但我不知道该怎么做 有人有主意吗 Phi ArcTan Sqrt 4 R 2 d 2 d HTH Edit 对于两个不同的半
  • 如何使从 C# 调用的 C(P/invoke)代码“线程安全”

    我有一些简单的 C 代码 它使用单个全局变量 显然这不是线程安全的 所以当我使用 P invoke 从 C 中的多个线程调用它时 事情就搞砸了 如何为每个线程单独导入此函数 或使其线程安全 我尝试声明变量 declspec thread 但
  • C++ 多行字符串原始文字[重复]

    这个问题在这里已经有答案了 我们可以像这样定义一个多行字符串 const char text1 part 1 part 2 part 3 part 4 const char text2 part 1 part 2 part 3 part 4
  • 两个静态变量同名(两个不同的文件),并在任何其他文件中 extern 其中一个

    在一个文件中将变量声明为 static 并在另一个文件中进行 extern 声明 我认为这会在链接时出现错误 因为 extern 变量不会在任何对象中看到 因为在其他文件中声明的变量带有限定符 static 但不知何故 链接器 瑞萨 没有显
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • C# xml序列化必填字段

    我需要将一些字段标记为需要写入 XML 文件 但没有成功 我有一个包含约 30 个属性的配置类 这就是为什么我不能像这样封装所有属性 public string SomeProp get return someProp set if som
  • 实例化类时重写虚拟方法

    我有一个带有一些虚函数的类 让我们假设这是其中之一 public class AClassWhatever protected virtual string DoAThingToAString string inputString retu
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 编译时展开 for 循环内的模板参数?

    维基百科 here http en wikipedia org wiki Template metaprogramming Compile time code optimization 给出了 for 循环的编译时展开 我想知道我们是否可以
  • C# 中的 IPC 机制 - 用法和最佳实践

    不久前我在 Win32 代码中使用了 IPC 临界区 事件和信号量 NET环境下场景如何 是否有任何教程解释所有可用选项以及何时使用以及为什么 微软最近在IPC方面的东西是Windows 通信基础 http en wikipedia org
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • 为什么C++代码执行速度比java慢?

    我最近用 Java 编写了一个计算密集型算法 然后将其翻译为 C 令我惊讶的是 C 的执行速度要慢得多 我现在已经编写了一个更短的 Java 测试程序和一个相应的 C 程序 见下文 我的原始代码具有大量数组访问功能 测试代码也是如此 C 的
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C++ 中的参考文献

    我偶尔会在 StackOverflow 上看到代码 询问一些涉及函数的重载歧义 例如 void foo int param 我的问题是 为什么会出现这种情况 或者更确切地说 你什么时候会有 对参考的参考 这与普通的旧参考有何不同 我从未在现
  • 使用 WGL 创建现代 OpenGL 上下文?

    我正在尝试使用 Windows 函数创建 OpenGL 上下文 现代版本 基本上代码就是 创建窗口类 注册班级 创建一个窗口 choose PIXELFORMATDESCRIPTOR并设置它 创建旧版 OpenGL 上下文 使上下文成为当前

随机推荐

  • 如何更改时间选择器对话框片段的默认配色方案?

    我正在尝试更改时间选择器对话框片段的默认颜色 现在我不知道我应该做什么 这就是我设法将我的主题设置为 没有actionBar but this is the dialog i get 这是我的 xml 样式文件
  • 睡眠或暂停 NSThread

    我正在创建一个新线程 它每隔一定时间就运行我的方法之一 现在我正在做的事情如下 NSThread thread NSThread alloc initWithTarget self selector selector setUpTimerT
  • 如何向 clang-cl 添加 std=c++11 标志?

    我尝试在Windows下使用clang cl编译C 11程序 Clang cl 是 clang 的包装器 以便与 cl Visual Studio 编译器 更加兼容 我尝试添加 std c 11 and std c 11并且都被拒绝了 这并
  • Ruby on Rails:我的实际目标是什么?

    我一直在 Ruby on Rails 3 中构建应用程序 并且开始担心性能优化 现在我希望我的问题对于这个网站来说不太主观 但我对事实感兴趣 而不是讨论 所以这里是 虽然我试图让视图渲染得更快 但有一件事我根本不知道 我的目标是什么 给定一
  • 在同一活动中将数据片段传递给片段

    我有一些问题想询问有关在活动中将数据从一个片段传递到另一个片段的问题 我不知道该怎么做 有人可以帮忙吗 这是我的代码 ShareFragment java package com example user8 myapplication im
  • C - 两个指针之间的转换行为

    2020年12月11日更新 感谢 一些程序员老兄 在评论中的建议 我的根本问题是我们的团队正在实现动态类型存储引擎 我们分配多个字符数组 PAGE SIZE 缓冲区16 对齐存储动态类型的数据 没有固定的结构 出于效率原因 我们无法执行字节
  • 在 Windows 8 Metro 风格应用程序中,如何在应用程序未运行时更新动态磁贴?

    在 Windows 8 Metro 风格应用程序中 如何在应用程序未运行时更新动态磁贴 当操作系统开始启动时 动态磁贴开始运行 http blogs msdn com b windowsappdev archive 2012 04 16 c
  • Selenium Python 最小化浏览器窗口

    我知道如何从驱动程序对象调用最大化窗口的方法 driver maximize window 但是当我需要最小化浏览器窗口 隐藏它 时应该使用什么方法呢 实际上 驱动程序对象没有最大化窗口属性 我的目标是在浏览器窗口中默默地工作 我不想在我的
  • 如何从 docker 镜像中删除图层?

    我通过增量提交构建了一个 docker 映像 这导致在我的 docker 镜像中创建了很多层 随后镜像的大小变得非常大 有没有办法去除图层并从而减小图像的大小 任何帮助 将不胜感激 您可以尝试导出图像 然后再次导入 通过这种方式 所有图层都
  • TortoiseMerge 可以用作 Windows Git Bash 的 difftool 吗?

    我刚刚开始使用 Git 我想使用 TortoiseMerge 作为 difftool 和 mergetool In my HOME gitconfig我有以下部分 我已经删除了这个问题的用户和颜色部分 merge tool tortoise
  • 如何在android中以编程方式将视频发送到电子邮件

    我想从我的 Android 应用程序将 30 秒的视频发送到电子邮件 我已发送带有图像附件的电子邮件 但它不适用于视频 请帮助我做到这一点 提前致谢 send setOnClickListener new OnClickListener O
  • 针对依赖扩展对象的任务的 Gradle 插件最佳实践

    我希望获得有关定义依赖于外部状态的插件任务的最佳实践的反馈 即在引用插件的 build gradle 中定义 我使用扩展对象和闭包来推迟访问这些设置 直到它们需要且可用为止 我也对任务之间共享状态感兴趣 例如将一个任务的输出配置为另一任务的
  • 标签中提取内容 C# RegEx

    我有一个代码 string tag div string pattern string Format lt 0 gt
  • 2 个具有相同名称的 iPhone 应用程序。这怎么可能?

    As per iTunes Connect 开发人员指南 https itunesconnect apple com docs iTunesConnect DeveloperGuide pdf 1 应用程序名称应清晰 2 应用程序名称不应通
  • 根据属性值更改 VisualState

    如何根据 WP7 上的属性值更改 VisualState 我尝试使用 MVVM 模式 当我的模型加载时 我希望我的视图进入特定的 VisualState 在 Silverlight 中 我们有属性更改的触发器 但在 WP7 中没有 PS 我
  • 为什么 getline() 函数不起作用,除非我在函数 chamodifier 中调用它两次[重复]

    这个问题在这里已经有答案了 怎么了如果我在字符修饰符函数中仅使用一次 get line 函数 编译器将忽略它 除非我调用该函数两次 为什么我不能只使用一次 我尝试使用其他方法 它有效 但我想了解这个 我现在只是随机编写一些内容 这样添加更多
  • Laravel 5.5 Eloquent WhenLoaded 关系

    On the Laravel 5 5 文档 https laravel com docs 5 5 eloquent resources under 条件关系 它说 whenLoaded 方法可用于有条件地加载关系 我在我的代码中尝试过 pu
  • UIView 与容器视图

    这就是我想要解决的问题 In each viewController我正在尝试插入广告和实际的控制元素 我在 raywenderlinch com 上完成了几个教程 以了解人们如何专业地将广告放入他们的应用程序中 他们使用 UIViews
  • Delphi/GDI+:设备上下文何时创建/销毁?

    通常在 Delphi 中使用 GDI 你可以使用绘画盒 并在期间进行绘画OnPaint event procedure TForm1 PaintBox1Paint Sender TObject var g TGPGraphics begin
  • 通过 TCP 的 C# 字节流

    我是一名初级工程师 希望就如何解决这个问题向这里所有有经验的人寻求一些建议 我被分配了一个项目来创建一个通过 TCP 进行字节流传输的服务器 客户端应用程序 我们公司处理带有 GPS 和调度软件的 2 路无线电 我们想用它制作一个服务器 客