byte[] bFileName = new byte[512];
r2Socket.Receive(bFileName);
String FileName = Encoding.UTF8.GetString(bFileName);
System.Windows.Forms.MessageBox.Show(FileName); // It's Ok. Show FileName = "text.jpg"
FileStream = new FileStream("D:\\" + FileName, FileMode.Create, FileAccess.Write);
のFileStream ArgumentExceptionがのFileStream例外
パスは、空の文字列( "")でのみホワイトスペースが含まれている、または1つ以上の無効な文字が含まれています。 - または - パスは、NTFS環境で "con:"、 "com1:"、 "lpt1:"などの非ファイルデバイスを参照します。
どうしてですか?どうも。
==
//CLIENT
byte[] bFileName = new byte[512];
Socket Socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
Socket.Connect(textBoxIP.Text, int.Parse(textBoxPORT.Text));
FileInfo sFileInfo = new FileInfo(textBoxFILE.Text);
string FileName = sFileInfo.Name;
bFileName = Encoding.UTF8.GetBytes(FileName);
Socket.Send(bFileName);
//SERVER
Socket rSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
IPAddress rIPAddress = Dns.GetHostEntry("localhost").AddressList[0];
IPEndPoint rIPEndPoint = new IPEndPoint(IPAddress.Any, int.Parse(textBoxPORT2.Text));
rSocket.Bind(rIPEndPoint);
rSocket.Listen(1);
byte[] bFileName = new byte[512];
r2Socket.Receive(bFileName);
String FileName = Encoding.UTF8.GetString(bFileName);
あなたは 'FileName'が空でないと有効なファイル名を持っていることを確認していますか? 'Path.Combine()'を使ってパスを組み合わせるのではなく、 '+ 'を使うほうが良い。 – abhilash
ソケットから読み込んでいるので、ファイル名に空白文字がないことを確認する。メッセージボックスの表示には表示されません。簡単なチェック方法は、ファイル名とファイル名の長さを表示することです。 – Josh
FileStream =新しいFileStream(Path.Combine(textBoxPATH.Text、 "i.jpg")、FileMode.Create、FileAccess.Write); //仕事です! – Andrey