标签: network-protocols

Java和CANopen

背景

我需要在笔记本电脑上创建一个Java程序来接收/发送CANopen消息.

选择RJ45作为网络的物理介质.我是CANopen和Java通信编程的新手.

请原谅我,如果我似乎不知情.事实是,我已经阅读了很多,但我仍然不知道如何开始.

问题

  1. 除了将PC连接到CANbus网络外,CAN-PC适配器还能做什么?
  2. 是否可以在没有CAN-PC适配器的情况下将笔记本电脑连接到CANbus网络?
  3. 如果需要CAN-PC适配器,我应该使用哪种适配器?PCMCIA,并行,串口,USB等?
  4. 如何开始编写java程序来监听/写入CANopen消息?
  5. 我应该使用哪些库?
  6. 我需要创建自己的驱动程序吗?
  7. 我的程序应该处理心跳监控,错误检测等吗?或者这些由CAN-PC适配器处理?
  8. 如何从CANbus节点检索特定信息?
  9. 如何创建EDS文件和对象字典?每个节点都需要它们吗?
    1. 如何在不购买CAN硬件的情况下模拟CAN网络来测试我的Java程序?

java automation network-protocols can-bus canopen

12
推荐指数
1
解决办法
5902
查看次数

如何衡量网络性能(如何对网络协议进行基准测试)

首先,有点背景.分布式版本控制系统(DVCS)有许多不同的比较,它们比较存储库的大小或基准操作速度.我没有找到任何可以对各种DVCS的网络性能进行基准测试,以及所使用的各种协议......除了测量涉及网络的操作(命令)的速度,如'clone','pull'/'fetch'或'push'.

我想知道你怎么做这样的比较; 如何衡量应用程序的网络性能,或如何测试网络协议.我在这里设想还测量性能对网络带宽和网络延迟(ping时间)的依赖性; 一些协议以更多往返交换(协商)的形式牺牲等待时间以发送最小所需的最终"包".

如果可能的话,我宁愿只涉及一台计算机的解决方案.我想看看开源解决方案,在Linux上工作.但我也欢迎更通用的答案.

首选操作系统: Linux
首选语言: C,Perl,shell脚本


可能的测量:

  • 在一个会话中从服务器传输到客户端以及从客户端传输到服务器的总字节数; 这也可以用来衡量协议的开销(带宽)
  • 一次交易中的往返次数(延迟)
  • 从网络带宽和网络延迟(ping时间)的网络操作速度(克隆/拉/推)所需的时间依赖性

如何进行此类测量(此类基准测试)?


添加02-06-2009:
最简单的基准测试(测量)将是time命令的网络版本,即运行的命令将给出我传输的字节数,以及执行给定命令期间的往返/网络连接数.


添加09-06-2009:上面提到的网络版命令解决方案的虚构输出
示例time如下所示:

$ ntime git clone -q git://git.example.com/repo.git
...
bytes sent: nnn (nn kiB), bytes received: nnn (nn kiB), avg: nn.nn KB/s
nn reads, nn writes
Run Code Online (Sandbox Code Playgroud)

请注意,它只是一个示例输出,详细说明了可能想要获得的信息类型.


添加09-06-2009:
看起来我想要的一些东西可以使用dummynet,工具(最初)来测试网络协议......

benchmarking networking profiling network-programming network-protocols

12
推荐指数
2
解决办法
2万
查看次数

我在哪里可以找到bittorent dht bootstrap节点的列表?

使用我的google-fu我只能找到几个节点:
router.bitcomet.com,router.utorrent.com,router.bittorrent.com

是否存在我不知道的所有bootstap节点的列表?torrent客户端开发人员在哪里获取引导节点的地址?(我看过洪流源代码,看到上面硬编码的模式.)

networking p2p bittorrent network-programming network-protocols

12
推荐指数
2
解决办法
8138
查看次数

计算停止和等待协议中的利用率

我的书中有一个关于计算利用率的问题,但是我无法找到关于这个主题的任何实质性信息来解决它.

无论如何,这是问题:

从地球到遥远行星的距离约为9×10 ^ 10米.如果在64 Mbps点对点链路上使用停止等待协议进行帧传输,那么信道利用率是多少?假设帧大小为32KB,光速为3×10 ^ 8m/s.

假设使用滑动窗口协议.对于什么发送窗口大小,链接利用率是100%?您可以忽略发送方和接收方的协议处理时间.

transmission network-protocols utilization network-utilization

12
推荐指数
1
解决办法
3万
查看次数

什么是tcp_autocorking(tcp自动软木塞)

从内核3.14开始,我看到有另一个名为tcp_autocorking的TCP优化.

tcp_cork和tcp_autocorking之间的实际区别是什么?

它只是tcp_cork的自动化版本吗?除了这个链接,我找不到任何有价值的信息:

http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=f54b311142a92ea2e42598e347b84e1655caf8e3

c linux networking tcp network-protocols

12
推荐指数
1
解决办法
2801
查看次数

无状态协议是否被认为更适合使用有状态协议?

我可以看到,有状态协议可以减少像曲奇一样的"模拟状态".

但是测试变得更加困难,以确保您的实现是正确的并重新连接,并且会话延续可能非常难以处理.

总是使用无状态协议被认为是更好的做法,还是它真的是特定于域的?

我认为在处理有状态协议时身份验证变得更容易,但是还有其他原因你应该使用有状态协议吗?

protocols network-protocols

11
推荐指数
3
解决办法
4866
查看次数

可用的游戏网络协议定义语言和代码生成

我一直在寻找一个好的通用二进制网络协议定义框架,以提供一种以多种语言编写实时游戏服务器和客户端(想想魔兽世界或Quake III)的方法(例如Java后端服务器和iPhone前端用Objective-C和Cocoa编写的客户端).

我想支持Windows上的Java Flash客户端,iPhone客户端和C#客户端(以及XBOX上的XNA客户端).

我正在寻找一种通过TCP/IP或UDP套接字流连接有效发送/接收消息的方法.我不是在寻找可以通过HTTP Web服务发送的东西,比如JSON或XML编组的对象.虽然Hessian的二进制Web服务协议是一个非常有趣的解决方案

我想要一种网络协议格式和客户端/服务器基本实现,它允许客户端连接到服务器并以定义的协议发送任何消息,并接收协议中的任何消息,而不必绑定到某种RPC端点.我希望我的协议传入和传出的任何消息的通用流.这样我就可以支持诸如服务器每隔100毫秒向所有客户端发送游戏中各种实体的位置.

xna real-time network-protocols protocol-buffers

11
推荐指数
1
解决办法
5477
查看次数

Tcp连接挂起CLOSE_WAIT状态

客户端首先关闭套接字,当服务器没有太多数据时,tcp连接关闭就好了:

FIN -->
   <-- ACK
   <-- FIN, ACK
ACK -->
Run Code Online (Sandbox Code Playgroud)

当服务器忙于发送数据时:

FIN -->
    <-- ACK,PSH
RST -->
Run Code Online (Sandbox Code Playgroud)

并且服务器连接进入CLOSE_WAIT状态并在那里挂了很长时间.

这有什么问题?客户相关或服务器相关?这种情况发生在Redhat5上,用于本地套接字.

文章说说为什么"RST"是送的,但我不知道为什么停留在CLOSE_WAIT服务器的连接,不发送一个FIN出来.

[编辑]我忽略了最重要的信息,这发生在qemu的slirp网络仿真上.这似乎是处理密切连接的slirp bug的问题.

linux network-programming tcp qemu network-protocols

11
推荐指数
1
解决办法
1万
查看次数

套接字协议基础

最近,在阅读Socket Programming HOWTO时,以下部分跳了出来:

但是,如果您计划重新使用套接字进行进一步传输,则需要意识到套接字上没有"EOT"(传输结束).我再说一遍:如果在处理0字节后套接字send或recv返回,则连接已断开.如果连接没有被破坏,你可以永远等待一个recv,因为套接字不会告诉你没有什么可读的(现在).现在,如果你仔细考虑一下,你就会发现套接字的一个基本事实:消息必须是固定长度(yuck),或者是分隔(耸肩),或者指示它们有多长(更好),或者通过关闭连接来结束.选择完全属于你,(但有些方式比其他方式更严格).

本节重点介绍了如何编写套接字"协议"以传递消息的4种可能性.我的问题是,用于实际应用的首选方法是什么?

通常最好在每条消息中包含消息大小(可能在标题中),因为文章或多或少断言?有没有其他方法更可取的情况?

sockets network-protocols

11
推荐指数
1
解决办法
7388
查看次数

是否可以通过telnet发送LDAP"请求"?

我想知道是否可以通过telnet(或其他程序)建立与LDAP服务器的连接,并开始发出请求和接收响应,就像我通常使用HTTP一样.事实上,这个问题更通用,与我对网络连接和通信协议的误解有关.让我告诉你我对这个话题的看法:

所有应用程序协议都定义了通信协议(即服务器将理解并根据其传递进行操作的消息).如果我知道应用程序协议是如何工作的,我可以建立与服务器的连接(控制该协议服务器端的守护进程)并开始与服务器通信.例如,使用HTTP,我可以通过telnet建立与HTTP SERVER的连接,并开始与他通过此请求进行交谈,例如:

GET /users/pepito HTTP/1.1
Host: stackoverflow
Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)

我希望这个程序能够在任何应用程序协议中发生.这个概念对吗?

我已经瞥见了LDAP协议规范RFC,但我不明白这些消息的格式.我的意思是,我期待阅读类似HTTP协议规范的内容; 但它太普通了.你能举个例子说明如何进行LDAP搜索吗?

ldap telnet network-protocols

11
推荐指数
1
解决办法
2万
查看次数