麻烦问下这个效果在VB.net怎么实现?
麻烦问下大家,在VB.net中怎么实现如图所示效果。
就是我输入Hello World,然后选择TCP,输入接收方的IP地址,点击发送就能让对方收到。
我搜集了基本上所有的TCP/IP的案例和源码,发送后对方软件都不能识别。
只有这个packetsender发送后对方软件做出响应。而其他的数据包发送工具都不能使对方响应。
我分析可能是编码问题,但是不懂具体问题出现在哪儿。希望大家能够帮忙解决,万谢!
方案是和预警系统相连,发送指定文本到对方程序后,对方程序根据文本做出处理并推送到指定屏幕。
...全文
请发表友善的回复…
发表回复
行者无疆大道无垠 2018-01-27
- 打赏
- 举报
试了,延时1-5秒都试了,一样的。
行者无疆大道无垠 2018-01-25
- 打赏
- 举报
packetsender是一个数据包收发工具,他是个开源的东西,用这个软件给对方软件发数据,他的可以,我的代码不行。
舉杯邀明月 2018-01-25
- 打赏
- 举报
你“看到”别人的“数据包内容”了吗?
如果没看到,你凭什么能说是“同样的东西”……
脆皮大雪糕 2018-01-25
- 打赏
- 举报
你在send之后延迟1秒再close试试
脆皮大雪糕 2018-01-24
- 打赏
- 举报
你的那个截图只是说明:数据包发过去了,这里面隐含了一个就是你的TCP握手是成功的,但是截图里面并没有说对方有任何反馈。
你的代码同样的问题,建议你单步跟踪,第一步,在s.Connect后面查询一下socket状态确认TCP握手成功,然后再往服务端发数据。
最后,个人的判断,先确定一下这个服务是不是你自己写的测试服务。如果这个8080端口是一个Apache Tomcat web server或者代理服务器啥的,它肯定不会理会你的hello world.
脆皮大雪糕 2018-01-24
- 打赏
- 举报
觉得是还没等对方反馈啥东西,你就close掉了……
行者无疆大道无垠 2018-01-24
- 打赏
- 举报
我截图所用的软件,点击发送后,对方程序会做出响应。
但是我用自己的代码发送,对方程序无任何变化。
我就是有点不明白,为什么同样的东西,不同的工具发送后效果不同呢。
赵4老师 2018-01-23
- 打赏
- 举报
学会使用抓包软件wireshark
行者无疆大道无垠 2018-01-22
- 打赏
- 举报
上面的代码测试了,对方程序不能响应。
行者无疆大道无垠 2018-01-22
- 打赏
- 举报
Try
Dim bytes(8080) As Byte
Dim s = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp)
Dim localEndPoint As New IPEndPoint(IPAddress.Parse("127.0.0.1"), 8080)
s.Connect(localEndPoint)
s.Send(Encoding.Unicode.GetBytes(TextBox1.Text))
s.Send(Encoding.ASCII.GetBytes(TextBox1.Text))
s.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
8080端口开着, netstat -aon| find "235"
TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 1468
非专业开发Five 2018-01-22
- 打赏
- 举报
用网络封包截取软件看看,对方这边是不是要在握手后确认一下正常。
X-i-n 2018-01-22
- 打赏
- 举报
为什么会send两次?
不能用Encoding.Unicode.GetBytes(),这个是utf16,你监视一下byte数组就清楚了,是24字节的
应该用utf8,或者ascii。
删掉s.Send(Encoding.Unicode.GetBytes(TextBox1.Text))
然后在s.Send(Encoding.ASCII.GetBytes(TextBox1.Text))打断点,netstat看一下有没有一个established状态的连接,或者直接监视s.connected。确定它建立了连接以后再继续往下走。照理这儿应该阻塞住直接到连接建立完成,或者异步等待连接建立完成以后回调connected方法。
舉杯邀明月 2018-01-21
- 打赏
- 举报
我觉得问题的根源,根本就不是“语言”的问题……
抓包,看看别人的“数据包封装格式”(也就是“协议”问题)吧!
你发送的数据包,不符合别人的“格式”,它“理你”才怪!!!
X-i-n 2018-01-21
- 打赏
- 举报
编码问题不像,发送的内容都是英文字符,不管Encoding.UTF8还是Encoding.Default,转为Byte以后结果都是一样的。另外还有一个观察的方法,单起一个socket,然后指定好目标地址和端口,直接connect。除非对方会主动断开,不然就可以在netstat的结果里看到一个侦听,一个established连接。
X-i-n 2018-01-21
- 打赏
- 举报
new一个socket,协议tcp,connect到127.0.0.1的8080,然后起一个线程异步处理DataReceive。
但是,不管你用什么语言开发,首先你要确定127.0.0.1的8080端口是开着的。打开cmd.exe,输入netstat -aon| find "8080",有显示为Listen的结果才行。
要是环境正常,还是上代码吧。
行者无疆大道无垠 2018-01-21
- 打赏
- 举报
那我图中这个软件为什么可以用呢