我有一个总是监听端口6002的插件,我有一个ASP.net应用程序,它将消息发送到同一个端口并从同一端口上的插件接收回复, 发送工作正常,插件在同一端口发送回复,但我不知道如何捕获此回复,当我尝试使用Tcplistener侦听同一端口时,start方法抛出此异常:仅通常允许使用每个套接字地址(协议/网络地址/端口),
有没有办法捕获收到的消息 感谢
答案 0 :(得分:3)
听起来你错误地认为从Socket获得的TcpListener.AcceptSocket只能在一个方向上使用。
套接字实际上可以是双向的。您可以使用Send发送内容,Receive发送收听获取回复。打开一个插槽,然后将其用于发送和接收。
答案 1 :(得分:1)
简而言之,没有。
一旦打开端口,如果进一步尝试使用来自不同来源的相同端口,则会抛出异常 - 正如您现在所经历的那样。没有办法解决这个问题。
答案 2 :(得分:1)
我用这种方式解决了这个问题,我知道这是旧方法,但它正在工作! :
'/*Variables Initialization*/
dim objSocket, strServicePort, strIpAddr, strResult, strMsgTo, strMsgResponse
strServicePort = "6002"
strIpAddr = "127.0.0.1"
'/* Create a TCP/IP socket. */
objSocket = Server.CreateObject("Intrafoundation.TCPClient.3")
objSocket.ClearLog()
'/* Establish socket connection. */
objSocket.Open (strIpAddr,strServicePort)
objSocket.Timeout=60.0
strMsgTo ="---- Message here ----"
'/* Send request message to plugin */
objSocket.SendRN(strMsgTo)
'/* receive XML Request Message from plugin */
strMsgResponse = objSocket.Recv()
strMsgResponse = Replace(strMsgResponse, vbLf, "")
objSocket.Close()
答案 3 :(得分:0)
如果要检查流量,可以使用winpcap。
编辑:我认为你没有问正确的问题。在这种情况下,插件是服务器(侦听端口6002),您的ASP.net应用程序是侦听某个任意端口的客户端。您只需要绑定到ASP.net应用程序中的其他端口,如果它还需要作为服务器运行,并且插件代理客户端。在这种情况下,您应该选择一个不同的端口,即使实际上有两种方法可以使它们在同一端口绑定时工作。
在您的情况下,您应该只读回您从客户端建立的连接的响应。