A客户端(局域网内网) B服务端(外网) 
A客户端发送指令 “Down#1#” --------->B服务端 
B服务端通过  EndPoint ep = socket.RemoteEndPoint;得到A端IP 和端口号(每次得到的这个端口号都是随机的) 
B服务端得到ep后,发指令给A (把端口号发送给A),然后A客户端又作为服务端来监听这个端口; 
B服务端然后开始用该端口 用NetworkStream 流发送给A端 
A端又作为服务端侦听这个端口来接收数据,实现下载,这样分析,可不可以实现? 
哪位能给个例子,谢谢

解决方案 »

  1.   

    需要用NAT,据图请GOOGLE/BAIDU吧
      

  2.   

    干脆用UDP方式算了,不用切换侦听
      

  3.   

    A客户端(局域网内网) B服务端(外网)  
    A客户端使用端口AA发送指令 “Down#1#” --------->B服务端  A客户端监听端口AAB服务端通过  EndPoint ep = socket.RemoteEndPoint;得到A端IP 和端口号(每次得到的这个端口号都是A客户端的AA端口在路由器中的映射端口,是随机的)  B服务端得到ep后,开始用该ep 用NetworkStream 流发送给A端  
    结构很简单的,当然你也可以不这么麻烦,直接使用A客户端的连线,用NetworkStream 流发送给A端