关于socket的问题

tianch 2009-07-10 04:15:34
本段代码是将content字符串内容传到服务器,等待服务器响应并将服务器传回的字符串返回,不明白为什么执行sclient.recv(recvBuf,Len(recvBuf),0)这句的时候就一直阻塞,停止响应了,如果ulParam=1则直接返回空值,服务器也没收到任何数据。代码如下:


string result=''
socketstream sclient
sclient = create socketstream
ulong ulParam = 0
sclient.ioctlsocket(ws.FIONBIO, ulParam)
ulong ulAddr
ulAddr = ws.inet_addr(address)
if sclient.wsconnect(ulAddr,integer(port)) <> -1 then
blob buf
blob recvBuf
buf = blob(content)
recvBuf = blob(space(256))
sclient.send(buf,Len(buf),0)

do while sclient.recv(recvBuf,Len(recvBuf),0) <> -1
result = result + trim(string(recvBuf))
loop
result = result + trim(string(recvBuf))
sclient.closesocket()
destroy sclient
end if
return result
...全文
117 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
张义雄 2009-07-17
  • 打赏
  • 举报
回复
用MSWINSOCK.OCX吧,我也是刚刚才开始用,还可以吧。
WorldMobile 2009-07-11
  • 打赏
  • 举报
回复
把代码改成如下再试一下

string result=''
socketstream sclient
sclient = create socketstream
ulong ulParam = 0
sclient.ioctlsocket(ws.FIONBIO, ulParam)
ulong ulAddr
ulAddr = ws.inet_addr(address)
if sclient.wsconnect(ulAddr,integer(port)) <> -1 then
blob buf
blob recvBuf
buf = blob(content)
recvBuf = blob(space(256))
sclient.send(buf,Len(buf),0)

long ll_i
for ll_i = 1 to 10000
yield()
next

do while sclient.recv(recvBuf,Len(recvBuf),0) <> -1
result = result + trim(string(recvBuf))
yield()
loop
result = result + trim(string(recvBuf))
sclient.closesocket()
destroy sclient
end if
return result
DYFDWX 2009-07-11
  • 打赏
  • 举报
回复
我也要,请把关于SOCKET示例发一份给我
newease 2009-07-11
  • 打赏
  • 举报
回复
已经将示例发至邮箱,请查收
wag_enu 2009-07-10
  • 打赏
  • 举报
回复

把事件代码合并写入一自定义事件,有数据需要读取时,在该事件中用recv 取数据即可.
tianch 2009-07-10
  • 打赏
  • 举报
回复
sclient.send(buf,Len(buf),0)
这句执行后,服务器没收到任何内容,所以没有任何响应,但是如果把以下几句去掉,服务器就会收到信息,不知道为什么
do while sclient.recv(recvBuf,Len(recvBuf),0) <> -1
result = result + trim(string(recvBuf))
loop
result = result + trim(string(recvBuf))
newease 2009-07-10
  • 打赏
  • 举报
回复
如果楼主需要此方面示例,可将邮箱地址发私信给我
永生天地 2009-07-10
  • 打赏
  • 举报
回复
socket默认是阻塞模式,如果连接正常,recv要等到接收到数据后才返回,如果对方没有发数据过来,就会一直阻塞。

680

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder API 调用
社区管理员
  • API 调用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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