我有一个奇怪的问题,需要别人的帮助。我有一个作为代理链一部分的程序。它从一件事中获取数据并将其发送到另一件事。我遇到的唯一问题是接收方法不接受任何内容。它只是在那里冻结。我的程序:
假设我们在链中有四个节点:A、B、C 和 D。
A 是网络浏览器
B 是我的 C# 程序
C 是我的 C# 客户端
D是一个网站
B 正在监听C 和 A。我知道这很奇怪,但这就是我需要它的配置方式。我怎样才能让这个该死的程序工作?我已经设置了大量的代码,但由于某种原因,C 没有从 B 接收任何东西。C 可以连接到 B,但 C 不会收到任何东西。谁能帮我?
我打开了所有端口,B 和 C 的防火墙都关闭了。A 和 B 都在我的本地计算机上运行。给你一些IP:
A 连接到 127.0.0.1:3056
B 监听 127.0.0.1:3056 和 B 监听 IPAddress.Any:3055
C 连接到 MY_IP_ADDRESS:3055 并且 C 连接到 B 告诉它的任何地方
其中 MY_IP_ADDRESS 是我从 whatismyip.com 获取的全球 IP 地址
为什么C没有收到任何东西?这是一些周围的代码:
客户 (C):
Socket reqSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("MY_IP_ADDRESS"), 3055);
reqSocket.Connect(ip);
byte[] ReqData = new byte[8192];
MessageBox.Show("BYTE"); // This runs, (click OK)
reqSocket.Receive(ReqData);
String ReqString = Encoding.UTF8.GetString(ReqData);
MessageBox.Show(ReqString); // This does not
服务器 (B):
TcpListener listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 3056);
listener.Start();
Socket Localhost = listener.AcceptSocket();
listener.Stop();
TcpListener listener2 = new TcpListener(IPAddress.Any, 3055);
listener2.Start(50);
Socket toSocket = listener2.AcceptSocket();
listener2.Stop();
byte[] buf = new byte[8192];
Localhost.Receive(buf);
toSocket.Send(buf);
MessageBox.Show("Sent!"); // This runs
这两个确实是同时开放的。