我正在研究P2P应用程序,我想使用打孔技术来连接对等体。 这是我的PHP第三方服务器脚本。
<?php
echo "{yourIP:'".$_SERVER['REMOTE_ADDR']."',yourPort:".$_SERVER['REMOTE_PORT']."}";
?>
在我的C#代码中,我创建了一个侦听8765的服务器套接字,当我想获取我的公共IP地址和端口号(为了与对等方共享)时,我使用WebClient Object向php服务器发送请求。问题是webclient对象使用随机本地端口来发出请求。 如何将webclient对象绑定到8765端口?所以请求始终使用此端口作为源端口。 谢谢!
抱歉我的英语不好! :)
答案 0 :(得分:1)
您将无法使用WebClient实现此目的,但您可以使用HttpWebRequest解决此问题:
public static IPEndPoint BindIPEndPointCallback(ServicePoint servicePoint, IPEndPoint remoteEndPoint, int retryCount)
{
Console.WriteLine("BindIPEndpoint called");
return new IPEndPoint(IPAddress.Any,5000);
}
public static void Main()
{
HttpWebRequest request = (HttpWebRequest) WebRequest.Create("http://MyServer");
request.ServicePoint.BindIPEndPointDelegate = new BindIPEndPoint(BindIPEndPointCallback);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();
}