[郁闷,救命]使用Socket编程出了问题

BooBio 2003-05-22 10:44:32
小弟我第一次想用vb.net编写一个socket程序,结果就出了问题。程序的功能很简单,就是 将域名转成ip地址--连接到ip上--下载默认网页--存成文件。 结果域名转ip没问题,也可以连接到ip上,向服务器发送下载命令也成功了,结果死活不能接受数据,不知道什么原因啊?

代码结构如下:
_________________________________________
Imports System.Net
Imports System.Net.Sockets
_________________________________________

Dim m_Host As IPHostEntry
Dim m_EP As IPEndPoint
Dim m_Sock As Socket
_________________________________________

Private Sub NetMain()

Dim ipAddr As IPAddress

'
'get ip
'
m_Host = Dns.Resolve(HostText.Text)
ipAddr = m_Host.AddressList(0)

'
'init socket
'
m_EP = New IPEndPoint(ipAddr, 80)
m_Sock = New Socket(AddressFamily.InterNetwork,SocketType.Stream,
ProtocolType.Tcp)

'
'connect
'
Try
m_Sock.Connect(m_EP)
Catch ex As Exception
Exit Sub
End Try
If Not m_Sock.Connected Then
Exit Sub
End If

'
'get web page,发送下载命令
'
Dim GetPage, RecvPage As String
Dim ByteGet(), ByteRecv(255) As Byte
Dim r As Integer

GetPage = "GET / HTTP/1.1\r\nHost: " + HostText.Text + "\r\nConnection: Close\r\n\r\n"
ByteGet = System.Text.ASCIIEncoding.ASCII.GetBytes(GetPage)

Try
m_Sock.Send(ByteGet, ByteGet.Length, SocketFlags.None)
Catch ex As Exception
Exit Sub
End Try

'
'循环接受数据
'
'============问题代码,数据为何无法接收??到这程序就无限等待了
r = m_Sock.Receive(ByteRecv, ByteRecv.Length, 0)
RecvPage = System.Text.ASCIIEncoding.ASCII.GetString(ByteRecv, 0, r)
While r > 0
r = m_Sock.Receive(ByteRecv, ByteRecv.Length, 0)
RecvPage += System.Text.ASCIIEncoding.ASCII.GetString(ByteRecv, 0, r)
End While

'…………其他代码
End Sub


那位大侠解释一二???
...全文
27 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
maochilong 2003-05-22
  • 打赏
  • 举报
回复
.net的winsock真他妈的烦人,没有vb6中的winsock好用,我也是搞了好久,不了了之,问了几个星期也没有人回答,还有一个问题.net的winsock连接的速度十分的慢让人受不了。后来我决定用C#编一个网络通信组件。希望你有好运
Montaque 2003-05-22
  • 打赏
  • 举报
回复
winsock发送的指令不对,主要是\r\n就是回车在.net重相当于vbcrlf

比如改为:
GetPage = "GET / HTTP/1.1" & vbCrLf & "Host: " + HostText.Text + vbCrLf & "Connection: Close" & vbCrLf & "Accept: */*" & vbCrLf & vbCrLf

这样应该可以的。
BooBio 2003-05-22
  • 打赏
  • 举报
回复
搞定了,谢谢,原来是这个问题

16,555

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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