2 kangkang621 kangkang621 于 2016.04.13 10:25 提问

VBS中Socket通过TCP协议发送数据

问题是一个接着一个:
在使用MSWINsock.Winsock通过TCP发送数据到Server的时候,提示如下错误:
图片说明
代码如下:
Dim sock,socket
'赋值sock变量为WINSOCK的对象
Set sock = Wscript.createobject("MSWINsock.Winsock")
sock.Protocol = 0
sock.RemoteHost = "10.185.59.51"
sock.RemotePort = "9991"
sock.Connect
Wscript.sleep 1
sock.SendData msglog ------- 148行代码
sock.Close

哪位大神遇到过?求助

2个回答

kangkang621
kangkang621   2016.04.17 20:22
已采纳

经过多次尝试已经解决,并不是sendData只能使用UDP,对TCP同样可以使用。
但是因为TCP是面向连接的可靠性协议,所以需要等待连接状态为connected之后才可以发送数据。
因此增加了等待时间,并且判断状态,从而解决了此问题。
Dim sock,socket
'赋值sock变量为WINSOCK的对象
Set sock = Wscript.createobject("MSWINsock.Winsock")
sock.Protocol = 0
sock.RemoteHost = "10.185.59.51"
sock.RemotePort = "9991"
sock.Connect
Wscript.sleep 2000
if sock.state=7 then
sock.SendData msglog
Wscript.sleep 10
end if
sock.Close

在判断状态时采用循环应该更好,设定间隔时间来检测状态应该会更好。
附状态代码意义:
sckClosed 0 缺省的。关闭
sckOpen 1 打开
sckListening 2 侦听
sckConnectionPending 3 连接挂起
sckResolvingHost 4 识别主机
sckHostResolved 5 已识别主机
sckConnecting 6 正在连接
sckConnected 7 已连接
sckClosing 8 同级人员正在关闭连接
sckError 9 错误

CSDNXIAOD
CSDNXIAOD   2016.04.13 17:53

Java中通过TCP协议发送和接收数据-Socket编程
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!