TCP通讯时 接收跟发送完全不受影响吗?

TCP通讯时 接收和发送完全不受影响吗??
设备和上位机通讯,需要借助CAN转以太网设备 以TCP方式发到网络端口,和上位机通讯。采用透明传输
当收到某种类型数据时,就需要下发给设备进行确认 。

上传数据接收没有问题,而下发的命令,则CAN总线上却接收不到。
上位机是TCP服务器端,采用重叠I、O模型实现。转换设备作为TCP客户端。
数据接收在一个线程里面,发送在另一个线程中 (就是send函数)。
重启设备后,却可以接收到,数据格式肯定没有问题。
请问是什么原因导致的??



------解决思路----------------------
重启设备后,却可以接收到,数据格式肯定没有问题。
-------------------------------
你设备重启TCP都断开连接了,还怎么能收到?
------解决思路----------------------
先用TCP/IP调试器模拟调试一下
再看看是不是多线程的问题
------解决思路----------------------
引用:
设备和上位机通讯,需要借助CAN转以太网设备 以TCP方式发到网络端口,和上位机通讯。采用透明传输
当收到某种类型数据时,就需要下发给设备进行确认 。

上传数据接收没有问题,而下发的命令,则CAN总线上却接收不到。
上位机是TCP服务器端,采用重叠I、O模型实现。转换设备作为TCP客户端。
数据接收在一个线程里面,发送在另一个线程中 (就是send函数)。
重启设备后,却可以接收到,数据格式肯定没有问题。
请问是什么原因导致的??

只能说你的通信程序部分有问题!
------解决思路----------------------
用抓包工具看一下有没有数据包。
------解决思路----------------------
如果重启一下就好了,不会在出问题,那说明什么?
是你描述有问题还是我理解错误?

捉包工具使用很简单,下个Wireshark,选对应网卡启动抓包就行了,不会百度一下。不过你需要一个hub,路由的话需要做端口映射,不然电脑无法捉到设备间的通信包。
------解决思路----------------------
你的服务器端是跑在pc上的?
如果是简单,直接Wireshark捉包看就知道数据包是否丢失。不需要hub或者映射。
------解决思路----------------------
引用:
 

Quote: 引用:

你的服务器端是跑在pc上的?
如果是简单,直接Wireshark捉包看就知道数据包是否丢失。不需要hub或者映射。

是的 。
如何知道丢了包?
程序在PC上运行,wrieshark也在PC上运行???

wrieshark当然在pc上,通信协议你自己清楚,看发送的包和应答的包是否匹配。
协议又谁先发起,是否能捉到他的包,有了内容就可以分析。