如下一段代码,可以下载新浪网主页数据,但我要将它改一下,将主机地址设置成为我公司内网中的一个主机服务器地址10.1.13.254:355(端口号).并且从服务器中下载相关数据.(正常应该通过一种程序中做一个指令:al/12345 来得到数据.数据未加密为明文),但我的程序发送指令正常,但就是收不到数据.变量myall的值始终为空.请高人为我指点一下,最好将代码根据以上网络状况进行修改.谢谢.Option Explicit
Dim myall As StringPrivate Sub Command1_Click()
Text1.Text = myall
End SubPrivate Sub Command2_Click()
End
End SubPrivate Sub Form_Load()
'建立连接
Winsock1.Protocol = 0
Winsock1.RemoteHost = "218.30.66.123" '新浪IP地址
Winsock1.RemotePort = 80 '端口号
Winsock1.Connect
End SubPrivate Sub Winsock1_Close()
Winsock1.Close
End SubPrivate Sub winsock1_connect()
Dim strcommand As String
Dim strwebpage As String
strwebpage = "218.30.66.123"
strcommand = "GET" + strwebpage + "http/1.0" + vbCrLf
strcommand = strcommand + "accept/" + vbCrLf
strcommand = strcommand + "accept text/html" + vbCrLf
strcommand = strcommand + vbCrLf
Winsock1.SendData strcommand ' 发送命令End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim webdata As String
Winsock1.GetData webdata, vbString
myall = myall + webdataEnd Sub
Dim myall As StringPrivate Sub Command1_Click()
Text1.Text = myall
End SubPrivate Sub Command2_Click()
End
End SubPrivate Sub Form_Load()
'建立连接
Winsock1.Protocol = 0
Winsock1.RemoteHost = "218.30.66.123" '新浪IP地址
Winsock1.RemotePort = 80 '端口号
Winsock1.Connect
End SubPrivate Sub Winsock1_Close()
Winsock1.Close
End SubPrivate Sub winsock1_connect()
Dim strcommand As String
Dim strwebpage As String
strwebpage = "218.30.66.123"
strcommand = "GET" + strwebpage + "http/1.0" + vbCrLf
strcommand = strcommand + "accept/" + vbCrLf
strcommand = strcommand + "accept text/html" + vbCrLf
strcommand = strcommand + vbCrLf
Winsock1.SendData strcommand ' 发送命令End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim webdata As String
Winsock1.GetData webdata, vbString
myall = myall + webdataEnd Sub
解决方案 »
- 小弟不懂VB.有个符号问题想请教下大家
- 取日期时候出错,急!!!
- 如何实现 mousemoveOut事件?
- 关于Chart控件的兼容问题,请教!!!!!
- 祝贺“论坛”变“社区”
- 在不同的显示器分辨率下,怎样保证:窗体大小变化时,内部的所有对象(控件)以同样的比例变化???
- sql server2000如何将图片,写入数据库中[在线等待]谢谢
- 关于坐标的小问题
- 假如我的下拉列表有这样的内容“TWSF-BD1”,现在我想从数据库中找到包含“BD1”的纪录,请问代码如何来写?用like实现是吧?请高手赐教
- 各位請注意:軟件奇妙的世界裡,不可能有什麼“藍領”?以後我再看見誰大放闕詞,就吊誰???
- 请问,在VB程序里如何访问局域网内的另外一台机器上的分区内容,在知道密码的情况下
- 一个很奇怪的错误
这个不是下载只是收到对方发给你的包估计你是看的一个新浪的天气小偷改写的
呵呵发送指令还是要用Winsock1.SendData "请求格式" 来发送吧
但是切记最后需要
strcommand = strcommand + vbCrLf
发送前
strcommand="请求格式"
strcommand = strcommand + vbCrLf
Winsock1.SendData strcommand
对吗?
0000 01 00 00 17 00 00 00 01 4F 51 70 02 1B 0B 32 20 ........OQp...2
0010 00 0F 1E 64 61 20 03 ...da .
左边是16进制的内容,右边可能是一些控制字符加da的命令内容。
这就是通过原程序发送da指令后,通过wpe抓包得到的东西。那么我在程序中的请求格式应该如何编写呢?请求格式是以16进制来写?还是以控制字符+指令来写?
01 00 00 17 00 00 00 01 4F 51 70 02 1B 0B 32 20 00 0F 1E 64 61 20 03
Winsock1.SendData 01 00 00 17 00 00 00 01 4F 51 70 02 1B 0B 32 20 00 0F 1E 64 61 20 03 '发送命令?
Option Explicit
Dim myall As StringPrivate Sub Command1_Click()
Text1.Text = myall
End SubPrivate Sub Form_Load()
'建立连接
Winsock1.Protocol = 0
Winsock1.RemoteHost = "10.14.10.1" '服务器IP地址
Winsock1.RemotePort = 355 '端口号
Winsock1.Connect
End SubPrivate Sub Winsock1_Close()
Winsock1.Close
End SubPrivate Sub winsock1_connect()
Dim strcommand As String
strcommand = "01 00 00 17 00 00 00 01 4F 51 70 02 1B 0B 32 20 00 0F 1E 64 61 20 03
" + vbCrLf
strcommand = strcommand + vbCrLf
Winsock1.SendData strcommand ' 发送命令End SubPrivate Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
On Error Resume Next
Dim webdata As String
Winsock1.GetData webdata, vbString
myall = myall + webdataEnd Sub
要转换成16进制的显示才可以其实你用这个软件发送一下用wpe抓下这个包就知道了如果和原先都一样就表示可以了
0010 00 0F 1E 64 61 20 03 ...da .Winsock1.SendData 发送那部分?
而wpe抓的包是16进制数据
那里是一回事
要转换成16进制