![]() |
||
|
Major Member
![]() 加入日期: Dec 2015
文章: 211
|
想請教一個網路程式。
如何用Visual Studio中C#,Visual Basic製作一個基於TCP/IPv4的檔案直傳軟體?
該軟體可以: 一、使用TCP/IPv4的TCP封包遞送想要傳送的檔案。 二、使用TCP/IPv4的UDP封包遞送想要傳送的檔案驗證碼、CRC、MD5及流量的操作。 三、直接使用IPv4之IP Address及61250埠號做為雙方收發送,中間不經過任何軟體中轉的媒介。 四、可以直接取得雙方的MAC Address做為傳送識別。 五、可以跨國傳送。 六、不需要公網IP。 此文章於 2024-10-31 07:32 PM 被 沒問題 編輯. |
|||||||
|
|
|
Junior Member
![]() ![]() ![]() 加入日期: May 2001 您的住址: 台北
文章: 713
|
copilot 寫的
製作基於 TCP/IPv4 的檔案直傳軟體是一項複雜的任務,但我們可以從以下步驟開始: 建立TCP客戶端和服務端: 使用 TcpClient 和 TcpListener 類來建立基本的TCP連接。 UDP檢驗碼、CRC、MD5及流量操作: 使用 UdpClient 類來建立UDP連接,用於傳送驗證碼、CRC、MD5等。 設定指定IP位址和端口: 明確指定 IPv4 地址和61250端口。 獲取MAC地址: 使用 NetworkInterface 類來獲取本地和遠程的MAC地址。 跨國傳送: 確保防火牆和路由器配置允許跨國連接。 不需要公網IP: 可以使用 NAT 穿透技術,如UPnP或STUN。 // TCP Server TcpListener listener = new TcpListener(IPAddress.Parse("192.168.1.1"), 61250); listener.Start(); TcpClient client = listener.AcceptTcpClient(); NetworkStream stream = client.GetStream(); byte[] buffer = new byte[1024]; int bytesRead = stream.Read(buffer, 0, buffer.Length); File.WriteAllBytes("received_file", buffer); stream.Close(); client.Close(); listener.Stop(); // TCP Client TcpClient client = new TcpClient("192.168.1.1", 61250); NetworkStream stream = client.GetStream(); byte[] fileBytes = File.ReadAllBytes("file_to_send"); stream.Write(fileBytes, 0, fileBytes.Length); stream.Close(); client.Close(); // UDP Checksum UdpClient udpClient = new UdpClient(); udpClient.Connect("192.168.1.1", 61250); byte[] crcData = CalculateCRC(fileBytes); udpClient.Send(crcData, crcData.Length); // MAC Address foreach (NetworkInterface nic in NetworkInterface.GetAllNetworkInterfaces()) { if (nic.OperationalStatus == OperationalStatus.Up) { Console.WriteLine(nic.GetPhysicalAddress().ToString()); } }
__________________
![]()
|
|
|
|
Silent Member
加入日期: Dec 2001
文章: 0
|
引用:
單純技術討論 如果不需要公網IP又沒有中繼媒介, 那雙方怎麼知道對方在哪裡? |
|
|
|
|
Senior Member
![]() ![]() ![]() 加入日期: Apr 2017 您的住址: (╯-_-)╯ ~ �嘵�
文章: 1,497
|
早就過了要交作業的年紀了吧?
要不要說清楚到底想幹啥? 幫兒子交作業? ![]() |
|
|
|
Major Member
![]() 加入日期: Dec 2015
文章: 211
|
引用:
這樣說好了… 我對網上的轉傳網路或是網路空間其實很反感,有些是要錢,有些是要容量限制,有些是傳送有大小限制。 這一直讓我回想到Windows 2000跟Windows ME的時代,其實Windows是有內建一個MsgBox的,就是一個在只能在區網傳文字檔案的Messenger。「當然如果當時你的區網是IPX或NetWare的話,其實是可以跨網的,但是一樣不能傳到外網。」 現在流行VPN又有什麼長城大牆,一下要什麼BT一下要什麼Donkey其實超級麻煩。 我就只是想傳個東西,管他是什麼,我只要負責上網,打字,把檔案上傳就可以傳到對方那裡,就如此簡單。 所以想要寫一個 一、能夠超級智障、簡單的傳文字、傳檔案軟體。 二、你只要有對方的IP跟埠號就可以。 三、需要識別雙方Mac Address。 我初步的想法是在臉書或對岸的微博上,寫下加密的傳送資料,接收者只要把傳送資料剪下貼上,就可以取得互連的所有資訊。之後就能直接一對一對口直接傳送。 也可以轉成一種FTP的型式,雙方都建立一個虛擬FTP,一樣只要在臉書或對岸的微博上,寫下加密的傳送資料,接收者只要把傳送資料剪下貼上,就可以取得互連的所有資訊。你把你的訊號傳來我這個虛擬FTP,我把我的訊號傳去你的虛擬FTP就行,直接對連直接互傳。 此文章於 2024-10-31 08:31 PM 被 沒問題 編輯. |
|
|
|
|
Regular Member
![]() ![]() 加入日期: Jun 2010
文章: 86
|
引用:
這些要做起來並不容易,通訊,協定,封包定義,監聽......每個都要手工解決,記得很久以前有linux上的Pidgin好像可以,忘了有沒有支援點對點直連的了 |
|
|
|
|
Silent Member
加入日期: Dec 2001
文章: 0
|
引用:
上傳到哪裡? 對方有很多人? 引用:
一 跟 二 or 一 跟 三 可能有衝突 引用:
你寫的軟體(電腦)可能要一直開著, 你寫的軟體也要能散布給對方 如果沒太多要求的話 file.io 是不是能夠接受 (<2GB) https://www.file.io/ 也支援API上傳 |
|||
|
|
|
Major Member
![]() 加入日期: Dec 2015
文章: 211
|
引用:
主要是想傳到對岸,當然也可以到美國。 因為兩地都有親人跟同事在。 這個上傳的意思就是像微信一樣,把自已想傳的檔案點擊,就會傳過去,不用經過中間的免空之類的。 引用:
如果先把問題縮小到只在自已家的私有網路互通又該怎麼做? 引用:
雙方在對傳的時候當然都是開著電腦不關的。 引用:
這個暫時免了。 引用:
你說的問題,老子閒時間特別多。 此文章於 2024-10-31 09:19 PM 被 沒問題 編輯. |
|||||
|
|
|
Elite Member
![]() ![]() ![]() ![]() ![]() 加入日期: Jan 2002
文章: 4,041
|
引用:
其實,如果妳會建立一個HTTPS網站 , 這很容易解決檔案傳輸的問題!! 1. 你先決定好一個網址(假設aaa.com.tw) 2. 再決定好檔案名稱(如何決定檔名,自行決定,暫定 file.dat) 3. 你把檔案下載網址告知對方(by Line / E-mail等) 4. 把檔案傳送到 網站裡 (通常透過FTP / SFTP傳送) 5. 這時就可以告知對方去下載 網址 https://aaa.com.tw/file.dat 就這樣 , 不用花心思去想那些有的沒的 !! 如果怕檔案外洩 , 也有兩個辦法 1. 檔案加密(你可把密碼事先約定好,告知對方) 2. 多一個步驟 , 在你網站哩,去建立一個目錄名稱,只有你們兩個才知道的目錄名稱,暫定 xx00yy22o3o 3. 那麼下載網址就會變成 https://aaa.com.tw/xx00yy22o3o/file.dat 除非是孩子的功課程式 , 那就乖乖寫程式吧!! ![]()
__________________
您想買新硬碟嗎? 購買前請務必參考這篇文章,是我的實際經驗 還想讓統一賺你的錢嗎?統一集團成員(能見度高的): 星巴克、家樂福、7-11、無印良品、黑貓宅急便、聖娜多堡、阪急百貨、 康是美、博客來、夢時代、Mister Donut 、Cold Stone 、龜甲萬、 維力33%股權、光泉31%股權、Smile速邁樂、紅心辣椒、台北轉運站(統一企業BOT) 統一LP33膠囊有環保署早已列管的一級管制品: DNOP塑化劑 |
|
|
|