socket连接的问题 ( 积分: 200 )

  • 主题发起人 主题发起人 wendaner
  • 开始时间 开始时间
W

wendaner

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在做一个和其他公司系统对接的东西,采用的是SOCKET连接,发送数据包到对方后获得消息是无效命令。但是把同样的命令使用Windows的TELNET工具发送就可以正常得到消息。请问是什么原因。
如果说要把我的程序改写成TELNET发送和接收的方式,在不改动自定义SOCKET的基础上,应该怎么来做,最好是有范例。
先谢谢了。
 
补充下,要是使用sendbuf方式发送,对方会没有反映,使用sendstream方式发送,对方就会说无效命令。同样的命令在cmd下面直接telnet到对方端口发送过去就有正常的消息回回来。
 
应该是编码部分有问题,代码?
 
代码比较长,执行过程没有问题,包也都是正常发出去了的,用SNIFER看过。
 
在网上查找,估计原因是对方用的是LINUX或者UNIX操作系统下的程序,所以需要用TELNET方式发送,通常的SOCKET方式发送就会有问题。不知道是否有SOCKET发送TELNET消息的范例,最好的带注释的。。。不是调用WINDOWS的CMD,是直接发送数据包的那种范例。。
 
既然SNIFER过了,可以肯定编码是没问题的,那么不用控件,直接用api看行不行。仿TELNET的代码本论坛好象有的,你自己搜搜。
 
肯定是包问题,都是跑TCP的,不存在什么特别协议.换个截包工具看清楚
 
只要都是TCP的就和协议无关么。。
0: 0014 4f1e 5113 000f e251 e868 0800 4500 ..O.Q....Q.h..E.
16: 0048 4a30 4000 7e06 74db c0a8 1202 0a37 .HJ0@.~.t......7
32: 60c3 0438 1774 8dfc cc55 9fa1 16de 5018 `..8.t.?U....P.
48: 4470 c21e 0000 7e43 3131 324f 5554 5445 Dp....~C112OUTTE
64: 5354 3a44 4e3d 3830 3030 3030 312c 464f ST:DN=8000001,FO
80: 5243 453d 303b RCE=0;
这个是我传的

0: 0014 4f1e 5113 000f e251 e868 0800 4500 ..O.Q....Q.h..E.
16: 0049 76b2 4000 7e06 4858 c0a8 1202 0a37 .Iv.@.~.HX.....7
32: 60c3 068f 1774 01f4 0482 69b5 4ee4 5018 `....t....i.N.P.
48: 4470 0489 0000 7e43 3131 324f 5554 5445 Dp....~C112OUTTE
64: 5354 3a44 4e3d 3830 3030 3030 312c 464f ST:DN=8000001,FO
80: 5243 453d 303b 0d RCE=0;.
这个是截的TELNET的。。

看不大懂。。只能确认是收到了的。。。
 
很明显16跟32的不一致嘛。。。。
为什么不同。。。不清楚。。。
不知道你什么协议啊
 
可能的原因
1。添加结束符了吗?
Unix和Linux需要结束符
2。计算机的不同苹果机等与微软的数据位数不同32位和16位
 
结束符是指?
 
字串要有#0结束符。从上面你给出的数据你怎样确认收到了呢?
 
总的来说很傻,原来传输果然是没问题的,只是因为对面是UNIX系统,所以最后结束的时候那个确定是一个#13回车+#10换行,我一直以为是#13,所以。。。
多谢大家了。
 
结帖了,谢谢大家的帮助。
 
后退
顶部