WINSOCKD 使用HTTP协议的问题.请进来指点.

yeman 2004-11-13 12:18:24
看到别人写的小程序可以访问网页并提取内容,还可以提交内容.所以也想用VB写个.
下面是我找的一个例子改的.
Option Explicit
Dim strCommand As String
Dim strWebPage As String

Private Sub Command1_Click()
If Winsock1.State <> 0 Then Winsock1.Close
Winsock1.RemoteHost = "61.134.xx.xx" '返回或设置远程计算机,控件向它发送数据或从它那里接收数据。
Winsock1.RemotePort = 80 '返回或设置要连接的远程端口号
Winsock1.Connect '返回与远程计算机的连接。
End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Winsock1.Close
End Sub

Private Sub Winsock1_Connect() '当一个 Connect 操作完成时发生。
On Error Resume Next
strWebPage = "http://61.134.xx.xx/BBS/Default.asp"
strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf
strCommand = strCommand + "Accept: */*" + vbCrLf '这句可以不要
strCommand = strCommand + vbCrLf '记住一定要加上vbCrLf

Winsock1.SendData strCommand '给远程计算机发送数据
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '当新数据到达时产生该事件
On Error Resume Next '在错误处理程序结束后,恢复原有的运行
Dim webData As String
Winsock1.GetData webData, vbString '检取当前的数据块
Text1.Text = Text1.Text + webData
End Sub

//////////////////////////////////////////////////
问题1:
strCommand = "GET " + strWebPage + " HTTP/1.0" + vbCrLf
改为:strCommand = "GET " + strWebPage + " HTTP/1.1" + vbCrLf
不能返回正确的网页,但是用http/1.0提交后服务器返回的头中却显示的是 http/1.1

问题2:
我用httpdebug软件测试论坛首页,返回的页面中显示我使用的端口.我再次提交后还使用的此端口,说明我和服务器的连接并没有中断.
但是我上面的程序,发送数据后,当服务器数据返回完后,对方服务器会主动断开连接.
此时我似乎不能使用Winsock1.SendData,只有close后重新Winsock1.Connect.此时使用的已经不是上次使用的端口了。

问题3:httpdebug中有AotuCookie, 如果用上面的程序有该怎么处理autocookie. 端口改变,服务器返回的cookie也就变了。

请高手指点,谢谢
...全文
1172 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
行云边 2005-01-18
  • 打赏
  • 举报
回复
参考rfc2616吧
ftp://ftp.rfc-editor.org/in-notes/rfc2616.txt


小弟也不是很熟悉 对楼主的问题 只能试着回答,如果不正确不要介意 呵呵

1。可能是 你下面的参数 不符合 HTTP1.1协议吧,导致服务器无法解析。
2。断口一样 不能说明没有断开连接啊 ,另外 好像有一个叫keep-alive 的参数,不知道是不是这个问题。
3。cookie 跟连接有没有断没有关系的,如果服务器设置了cookie 或者在asp使用了session,都会在http头里返回一个cookie值的。你只要读取这个值,然后发送下一个数据请求的时候在http头上加上cookie 参数,这样就可以了。
VBDN 2005-01-18
  • 打赏
  • 举报
回复
帮你顶
yeman 2004-11-13
  • 打赏
  • 举报
回复
用Winsock更能了解HTTP.

下面是<<TCPIP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议>>关于HTTP协议的一段文字:
//////////////////////////////
[Padmanabhan 1995]和[Mogul 1995b]中建议客户与服务器保持一个打开的T C P连接,而
不是服务器在发出响应后关闭连接。当服务器知道生成的响应报文的长度时才可以这样做,
回想前面1 3 . 3 . 4节中我们提到的例子, C o n t e n t - L e n g t h报文首部中指出G I F图象的大小。
否则,服务器必须通过关闭连接来为客户程序指出响应的结尾。对协议作这样的修改必须同
时修改客户端和服务器端。客户端规定Pragma: hold-connection 报文首部,提供向后
兼容的能力。如果服务器不能识别这种P r a g m a,就会忽略它,然后在发送完响应后关闭连接。
这种P r a g m a允许新客户程序在尽可能情况下保持连接,同时访问新的服务器,还允许现有所
有客户和服务器交互操作。
H T P P协议的下一版本(版本1 . 1 )中可能会支持持续的连接,虽然具体怎么做可能
会有变化。
在这里我们实际上提到了当前定义的三种服务器结束响应的方法。最好的办法
是使用C o n t e n t - L e n g t h报文首部,其次是服务器发送一个带有boundary = 属
性的C o n t e n t - T y p e报文首部([Rose 1993]的6 . 1 . 1节中给出了怎样使用这种属性的例
子,但是并非所有的客户程序都支持这种特性)。最差的选择(但最广泛运用的)便是
服务器关闭连接
/////////////////////////////////
但是我使用HTTP/1.1时,服务器不接受,但服务器返回的确是HTTP/1.1 :(
helanshan 2004-11-13
  • 打赏
  • 举报
回复
up
yas 2004-11-13
  • 打赏
  • 举报
回复
用Inet吧
基于实时迭代的数值鲁棒NMPC双模稳定预测模型(Matlab代码实现)内容概要:本文介绍了基于实时迭代的数值鲁棒非线性模型预测控制(NMPC)双模稳定预测模型的研究与Matlab代码实现,重点在于提升系统在存在不确定性与扰动情况下的控制性能与稳定性。该模型结合实时迭代优化机制,增强了传统NMPC的数值鲁棒性,并通过双模控制策略兼顾动态响应与稳态精度,适用于复杂非线性系统的预测控制问题。文中还列举了多个相关技术方向的应用案例,涵盖电力系统、路径规划、信号处理、机器学习等多个领域,展示了该方法的广泛适用性与工程价值。; 适合人群:具备一定控制理论基础和Matlab编程能力,从事自动化、电气工程、智能制造、机器人控制等领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于非线性系统的高性能预测控制设计,如电力系统调度、无人机控制、机器人轨迹跟踪等;②解决存在模型不确定性、外部扰动下的系统稳定控制问题;③通过Matlab仿真验证控制算法的有效性与鲁棒性,支撑科研论文复现与工程原型开发。; 阅读建议:建议读者结合提供的Matlab代码进行实践,重点关注NMPC的实时迭代机制与双模切换逻辑的设计细节,同时参考文中列举的相关研究方向拓展应用场景,强化对数值鲁棒性与系统稳定性之间平衡的理解。

1,502

社区成员

发帖
与我相关
我的任务
社区描述
VB 网络编程
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧