各位高人们:
我建立了一个ActiveX DLL然后引入了一个Form目的是为了放置Winsock控件(作为TCP服务端接收TCP客户的数据)。
在DLL中只有一个函数:
function get_data()
get_data=ask_data() '返回接收到的数据,ask_data()是From中的函数
end function
在Form中引入一个winsock控件(tcpServer):
function ask_data
If tcpServer.State <> 0 Then
tcpServer.Close
End If tcpServer.LocalPort = 1002
tcpServer.Listen
tcpServer.SendData "send" '命令TCP客户端发送数据
end function Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
'接收TCP客户端发来的数据,然后将收到的数据赋给全局字符串变量data_str
tcpServer.GetData strData
data_str= data_str & strData
end sub Form中的其它代码省略.......我通过PHP或ASP调用Dll的get_data希望获得TCP客户端传过来的数据。目前我已经证实通过PHP或ASP调用Dll的get_data方法确实可以由服务端winsock控件接收到数据
问题是:接收到的数据不能返回调用者(即PHP或ASP),当ASP调用了get_data()后立即执行
Form中的ask_data,接下来客户端开始发数据,tcpServer的DataArrival事件不断被触发,每接到一批数据便拼接到全局字符串data_str结尾,但是get_data始终返回空串,我觉得原因可能是DLL中的get_data函数的执行与Form中winsock控件接收数据并赋值给字符串data_str是并发在进行,而winsock接收数据要花一定的时间,反之get_data函数的执行很快,在winsock控件尚未接收到数据之前就已经返回给调用者(ASP)了,所以ASP始终得到的是空串。如何解决这个问题,如何才能控制get_data方法的返回时机?
我建立了一个ActiveX DLL然后引入了一个Form目的是为了放置Winsock控件(作为TCP服务端接收TCP客户的数据)。
在DLL中只有一个函数:
function get_data()
get_data=ask_data() '返回接收到的数据,ask_data()是From中的函数
end function
在Form中引入一个winsock控件(tcpServer):
function ask_data
If tcpServer.State <> 0 Then
tcpServer.Close
End If tcpServer.LocalPort = 1002
tcpServer.Listen
tcpServer.SendData "send" '命令TCP客户端发送数据
end function Private Sub tcpServer_DataArrival(ByVal bytesTotal As Long)
'接收TCP客户端发来的数据,然后将收到的数据赋给全局字符串变量data_str
tcpServer.GetData strData
data_str= data_str & strData
end sub Form中的其它代码省略.......我通过PHP或ASP调用Dll的get_data希望获得TCP客户端传过来的数据。目前我已经证实通过PHP或ASP调用Dll的get_data方法确实可以由服务端winsock控件接收到数据
问题是:接收到的数据不能返回调用者(即PHP或ASP),当ASP调用了get_data()后立即执行
Form中的ask_data,接下来客户端开始发数据,tcpServer的DataArrival事件不断被触发,每接到一批数据便拼接到全局字符串data_str结尾,但是get_data始终返回空串,我觉得原因可能是DLL中的get_data函数的执行与Form中winsock控件接收数据并赋值给字符串data_str是并发在进行,而winsock接收数据要花一定的时间,反之get_data函数的执行很快,在winsock控件尚未接收到数据之前就已经返回给调用者(ASP)了,所以ASP始终得到的是空串。如何解决这个问题,如何才能控制get_data方法的返回时机?
解决办法是在DLL中再建立一个函数,该函数返回data_str的数据,然后在PHP和ASP中反复调用该函数取得数据。
我怎样才能在tcpServer_DataArrival中控制是否让ask_data函数结束并返回
谢谢!!!!!!!!!!!!!
我试过你的方法可惜还是不行。
zyg0(影子(成功减肥10斤,可给我饿坏了,我要补回来) :
多谢,ok了。
比如:总收到100条数据,已被asp请求30条,asp请求时就能过内存中发送或者:
建两个winsock控件,一个专门是接收外部,一个专门和asp通讯