Microchip
直播中

何兰兰

7年用户 201经验值
私信 关注
[问答]

如何确定我的应用程序中是否使用了TCP或UDP?

您好,我怀疑在我的应用程序中是否使用TCP或UDP。我们有一个固件在PIC18F97J60中运行,带有最新版本的TCP/IP堆栈。当我们有好的条件时,一切都很好。但是我们一直在做一些测试,现在我有2个问题:1—PIC作为服务器运行。另一方面,我有一个简单的应用程序,它使用TCP发送一些包。如果PIC端不接收包,例如不调用TCPGet,则另一端不知道我没有收到。我放置wireshark来查看包,稍后我可以看到“Windows已满”和其他错误,但我的应用程序不会抛出异常。那么,在这种情况下,我应该在应用层做一些测试吗?如果我必须这么做,我更喜欢使用UDP,因为它更快,对吧?2-如果我在PC端的应用程序正在通过wi-fi运行,在某些包中,我有“快速重传”,即PC应用程序正在自动重传一些包。但问题是,我再次收到(PIC侧)相同的包,没有一个标志来检查它是否是一个重传的包。我猜TCP/IP堆栈应该检查这个,不要传递给应用层,对吧????但是在我的测试中,我总是收到两次相同的包。上面的2个问题只有在我使用TCP时才出现。我知道它们对于提高可实现性很好,但是在我的情况下,它们没有帮助(第二种情况是令人不安的)。你的意见是什么?最好的问候

回帖(2)

陈杰

2019-10-24 11:05:25
我喜欢使用一个协议,每个传输都包含在一个包中,例如包号,接收方接收它得到的每个包号,发送方知道发送下一个包或重发最后一个包等。T?
举报

乔亚楠

2019-10-24 12:00:58
TKS克里斯A和RISC为您的答复。克里斯A,你是对的,但我是在桌面应用侧说话。我想,当我不能接收时,会抛出一个异常。RISC,我同意你的意见,但它不是我所看到的使用微芯片堆栈。我的桌面应用程序只发送一次,但是堆栈(在TCP侧)没有更快地接收ACK(因为Wi-Fi延迟)。然后,堆栈重新发送一些包。如果我使用有线网络进行同样的测试,我不会注意到这种行为。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分