[英]An address incompatible with the requested protocol was used?
Here is the Code 这是代码
Socket socket = new Socket(AddressFamily.InterNetworkV6, SocketType.Stream, ProtocolType.Tcp);
socket.Connect("fe80::fc33:41d6:77f4:c8c7", 1000);
when i try and connect with this address i get the "An address incompatible with the requested protocol was used" exception. 当我尝试与此地址连接时,出现“使用了与请求的协议不兼容的地址”的异常。
IPv6 link-lical addresses are valid on every link, so you need to tell the system which link to use. IPv6链接许可证地址在每个链接上均有效,因此您需要告诉系统要使用哪个链接。 That is usually done by appending % and the interface id to the address.
通常通过将%和接口ID附加到该地址来完成。 Using global addresses is usually easier.
使用全局地址通常更容易。
I get this error while uploading a folder on my FTP server: 我在FTP服务器上上传文件夹时收到此错误:
an address incompatible with the requested protocol was used
使用了与请求的协议不兼容的地址
Sometimes it uploads it successfully, but other times it fails. 有时它会成功上传,但有时会失败。
namespace WindowsFormsApplication1
{
public partial class FormFtpLibraryExtensionDemo : Form
{
public FormFtpLibraryExtensionDemo()
{
InitializeComponent();
}
public static FTP ftplib = null;
public void ProgressEvent(System.IO.FileInfo File, long BytesTotal, long FileSize, long TotalBytesDirectorySent, long TotalBytesDirectory, long StartTickCount)
{
if (this.InvokeRequired)
{
this.BeginInvoke(new MethodInvoker(delegate() { ProgressEvent(File, BytesTotal, FileSize, TotalBytesDirectorySent, TotalBytesDirectory, StartTickCount); }));
return;
}
TimeSpan elapsedSpan = new TimeSpan(DateTime.Now.Ticks - StartTickCount);
labelFilename.Text = "Filename: " + File.FullName;
labelCurrentSend.Text = "Current: " + (BytesTotal / 1024).ToString() + "/" + (FileSize / 1024).ToString() + " KB";
labelTotal.Text = "Total: " + (TotalBytesDirectorySent / 1024).ToString() + "/" + (TotalBytesDirectory / 1024).ToString() + " KB";
labelElapsed.Text = "Elapsed: " + string.Format("{0:D2}:{1:D2}:{2:D2}", elapsedSpan.Hours, elapsedSpan.Minutes, elapsedSpan.Seconds);
if (progressBar1.Value != (int)((BytesTotal * 100) / FileSize))
progressBar1.Value = (int)((BytesTotal * 100) / FileSize);
if (progressBar2.Value != (int)((TotalBytesDirectorySent * 100) / TotalBytesDirectory))
progressBar2.Value = (int)((TotalBytesDirectorySent * 100) / TotalBytesDirectory);
if ((new TimeSpan(DateTime.Now.Ticks - updateTime).TotalMilliseconds > 200) || (TotalBytesDirectorySent == TotalBytesDirectory))
{
updateTime = DateTime.Now.Ticks;
deltabytes = TotalBytesDirectorySent - deltabytes;
deltatime = elapsedSpan.Subtract(deltatime);
if (deltatime.Seconds > 0)
{
labelSpeed.Text = "Speed: " + (deltabytes / deltatime.Seconds / 1024).ToString() + " KB/s";
TimeSpan t = TimeSpan.FromSeconds((TotalBytesDirectory - deltabytes) / (deltabytes / deltatime.Seconds));
labelRemaining.Text = "Remaining: " + string.Format("{0:D2}:{1:D2}:{2:D2}", t.Hours, t.Minutes, t.Seconds);
}
}
if (BytesTotal == FileSize)
{
deltabytes = 0;
deltatime = new TimeSpan(0);
}
}
private long deltabytes = 0;
private TimeSpan deltatime = new TimeSpan(0);
private long updateTime = 0;
private void buttonUpload_Click(object sender, EventArgs e)
{
if (folderBrowserDialog1.ShowDialog() == DialogResult.OK)
{
ftplib = new FTP(textBoxHost.Text, textBoxUsr.Text, textBoxPwd.Text);
ftplib.Connect();
new Thread(delegate()
{
ftplib.UploadFolderRecursively(folderBrowserDialog1.SelectedPath, ProgressEvent);
}).Start();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.