[問題] 檔案無法傳送完全

看板C_Sharp (C#)作者 (克里斯)時間14年前 (2011/05/25 12:03), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串1/1
主要目的是在client端透過webcam截取影像之後灰階化及取邊緣的三個圖存下來之後 在藉由tcp傳送檔案到server端 可是不知道為什麼只能傳送前兩張圖, 第三張圖存下來卻無法顯示 麻煩各位前輩指教一下了 剛接觸c#跟.net不久 以下是傳檔的程式 ======================================================================= client端 TcpClient tc = new TcpClient(); tc.Connect("192.168.0.129", 5000); fs1 = new FileStream(@"原圖.jpg", FileMode.Open); fs2 = new FileStream(@"灰階.jpg", FileMode.Open); fs3 = new FileStream(@"canny.jpg", FileMode.Open); StreamReader sw = new StreamReader(fs1); StreamReader sw1 = new StreamReader(fs2); StreamReader sw2 = new StreamReader(fs3); NetworkStream ns = tc.GetStream(); byte[] getb = new byte[1024000]; fs1.Read(getb, 0, getb.Length); ns.Write(getb, 0, getb.Length); fs2.Read(getb, 0, getb.Length); ns.Write(getb, 0, getb.Length); fs3.Read(getb, 0, getb.Length); ns.Write(getb, 0, getb.Length); Console.Read(); } catch (IOException Ex) { Console.Write("出代誌了" + Ex); Console.Read(); } server端 Console.Write("Server 正在起動中!!"); TcpListener serv = new TcpListener(5000); serv.Start(); TcpClient getClient = serv.AcceptTcpClient(); NetworkStream ns = getClient.GetStream(); int chk; FileStream fs1 = new FileStream(@"原圖.jpg", FileMode.Create); FileStream fs2 = new FileStream(@"灰階.jpg", FileMode.Create); FileStream fs3 = new FileStream(@"canny.jpg", FileMode.Create); byte[] getb = new byte[1024000]; do { chk = ns.Read(getb, 0, getb.Length); fs1.Write(getb, 0, getb.Length); Console.WriteLine(); } while (chk == 0); fs1.Close(); NetworkStream ns1 = getClient.GetStream(); do { chk = ns1.Read(getb, 0, getb.Length); fs2.Write(getb, 0, getb.Length); Console.WriteLine(); } while (chk == 0); fs2.Close(); NetworkStream ns2 = getClient.GetStream(); do { chk = ns2.Read(getb, 0, getb.Length); fs3.Write(getb, 0, getb.Length); Console.WriteLine(); } while (chk == 0); fs3.Close(); Console.Write("已經收完了"); Console.Read(); } catch (IOException Ex){ Console.Write("出代誌了" + Ex); Console.Read(); } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.124.44.104

05/25 12:05, , 1F
所有的 stream 使用結束都記得加上 close();
05/25 12:05, 1F

05/25 12:05, , 2F
你的 ns1, ns2 都沒有做,可以先補上 close() 試試
05/25 12:05, 2F
文章代碼(AID): #1Dt7-kRZ (C_Sharp)
文章代碼(AID): #1Dt7-kRZ (C_Sharp)