【问题标题】:How to listen to a TCP port which is already being listened by another app如何侦听已被另一个应用程序侦听的 TCP 端口
【发布时间】:2011-05-19 13:09:20
【问题描述】:

我有一个插件,它总是监听端口 6002,我有一个 ASP.net 应用程序,它向同一个端口发送消息并在同一个端口接收来自插件的回复, 发送工作正常,插件在同一个端口上发送回复,但我不知道如何捕捉这个回复,当我尝试使用Tcplistener 监听同一个端口时,启动方法会抛出这个异常:只有一种用法每个套接字地址(协议/网络地址/端口)通常是允许的,

有什么方法可以捕获收到的消息 谢谢

【问题讨论】:

  • 据我所知,一旦端口被使用,就不可能打开它。
  • 写作时请避免全部大写。你太粗鲁了。
  • 它被一个java插件监听了,是不是意味着我根本无法访问它???

标签: c# asp.net vb.net networking network-programming


【解决方案1】:

听起来您错误地假设您从TcpListener.AcceptSocket 获得的Socket 只能用于一个方向。

套接字实际上可以是双向的。您可以使用Send 发送内容,并使用Receive listen for 获取回复。打开一个套接字,然后将其用于发送和接收。

【讨论】:

  • 所以我可以听!!每个人都说不,并投票否决我的问题!
  • 不,你不能(轻易地)听。 TCP 意义上的“侦听”意味着侦听新的传入连接。
【解决方案2】:

简而言之,没有。

一旦端口打开,如果进一步尝试使用来自不同来源的同一端口,则会引发异常 - 正如您现在所经历的那样。没有办法解决这个问题。

【讨论】:

    【解决方案3】:

    我已经用这种方法解决了这个问题,我知道这是旧方法,但它有效! :

    '/*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()
    

    【讨论】:

      【解决方案4】:

      如果你想检查流量,你可以使用 winpcap。
      编辑:我不认为你问的是正确的问题。在这种情况下,插件是服务器(侦听端口 6002),而您的 ASP.net 应用程序是侦听某个任意端口的客户端。如果您的 ASP.net 应用程序还需要作为服务器运行且插件充当客户端,则您只需绑定到其他端口即可。在这种情况下,您应该选择一个不同的端口,尽管事实上,当它们都绑定到同一个端口时,有多种方法可以使它工作。
      在您的情况下,您应该只从客户端建立的连接中读取响应。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        相关资源
        最近更新 更多