PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   七嘴八舌異言堂 (https://www.pcdvd.com.tw/forumdisplay.php?f=12)
-   -   想請教一個網路程式。 (https://www.pcdvd.com.tw/showthread.php?t=1210748)

沒問題 2024-10-31 07:30 PM

想請教一個網路程式。
 
如何用Visual Studio中C#,Visual Basic製作一個基於TCP/IPv4的檔案直傳軟體?

該軟體可以:
一、使用TCP/IPv4的TCP封包遞送想要傳送的檔案。
二、使用TCP/IPv4的UDP封包遞送想要傳送的檔案驗證碼、CRC、MD5及流量的操作。
三、直接使用IPv4之IP Address及61250埠號做為雙方收發送,中間不經過任何軟體中轉的媒介。
四、可以直接取得雙方的MAC Address做為傳送識別。
五、可以跨國傳送。
六、不需要公網IP。

a9607 2024-10-31 07:58 PM

這個已經是要寫一個傳檔軟體了吧?

:ase

polor 2024-10-31 08:02 PM

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());
}
}

kindalo 2024-10-31 08:04 PM

引用:
作者沒問題
如何用Visual Studio中C#,Visual Basic製作一個基於TCP/IPv4的檔案直傳軟體?

該軟體可以:
一、使用TCP/IPv4的TCP封包遞送想要傳送的檔案。
二、使用TCP/IPv4的UDP封包遞送想要傳送的檔案驗證碼、CRC、MD5及流量的操作。
三、直接使用IPv4之IP Address及61250埠號做為雙方收發送,中間不經過任何軟體中轉的媒介。
四、可以直接取得雙方的MAC Address做為傳送識別。
五、可以跨國傳送。
六、不需要公網IP。


單純技術討論
如果不需要公網IP又沒有中繼媒介, 那雙方怎麼知道對方在哪裡?

冰的啦魔王大人 2024-10-31 08:10 PM

早就過了要交作業的年紀了吧?
要不要說清楚到底想幹啥?
幫兒子交作業?
:confused:

沒問題 2024-10-31 08:29 PM

引用:
作者kindalo
單純技術討論
如果不需要公網IP又沒有中繼媒介, 那雙方怎麼知道對方在哪裡?


這樣說好了…

我對網上的轉傳網路或是網路空間其實很反感,有些是要錢,有些是要容量限制,有些是傳送有大小限制。

這一直讓我回想到Windows 2000跟Windows ME的時代,其實Windows是有內建一個MsgBox的,就是一個在只能在區網傳文字檔案的Messenger。「當然如果當時你的區網是IPX或NetWare的話,其實是可以跨網的,但是一樣不能傳到外網。」

現在流行VPN又有什麼長城大牆,一下要什麼BT一下要什麼Donkey其實超級麻煩。

我就只是想傳個東西,管他是什麼,我只要負責上網,打字,把檔案上傳就可以傳到對方那裡,就如此簡單。

所以想要寫一個
一、能夠超級智障、簡單的傳文字、傳檔案軟體。
二、你只要有對方的IP跟埠號就可以。
三、需要識別雙方Mac Address。

我初步的想法是在臉書或對岸的微博上,寫下加密的傳送資料,接收者只要把傳送資料剪下貼上,就可以取得互連的所有資訊。之後就能直接一對一對口直接傳送。

也可以轉成一種FTP的型式,雙方都建立一個虛擬FTP,一樣只要在臉書或對岸的微博上,寫下加密的傳送資料,接收者只要把傳送資料剪下貼上,就可以取得互連的所有資訊。你把你的訊號傳來我這個虛擬FTP,我把我的訊號傳去你的虛擬FTP就行,直接對連直接互傳。

michelle-lai529 2024-10-31 09:00 PM

引用:
作者沒問題
這樣說好了…

我對網上的轉傳網路或是網路空間其實很反感,有些是要錢,有些是要容量限制,有些是傳送有大小限制。

這一直讓我回想到Windows 2000跟Windows ME的時代,其實Windows是有內建一個MsgBox的,就是一個在只能在區網傳文字檔案的Messenger。「當然如果當時你的區網是IPX或NetWare的話,其實是可以跨網的,但是一樣不能傳到外網。」

現在流行VPN又有什麼長城大牆,一下要什麼BT一下要什麼Donkey其實超級麻煩。

我就只是想傳個東西,管他是什麼,我只要負責上網,打字,把檔案上傳就可以傳到對方那裡,就如此簡單。

所以想要寫一個
一、能夠超級智障、簡單的傳文字、傳檔案軟體。
二、你只要有對方的IP跟埠號就可以。
三、需要識別雙方Mac Address。

我初步的想法是在臉書或對岸的微博上,寫下加密的傳送資料,接收者只要把傳送資料剪下貼上,就可以取得互連的所有資訊。之後就...

這些要做起來並不容易,通訊,協定,封包定義,監聽......每個都要手工解決,記得很久以前有linux上的Pidgin好像可以,忘了有沒有支援點對點直連的了

kindalo 2024-10-31 09:06 PM

引用:
我就只是想傳個東西,管他是什麼,我只要負責上網,打字,把檔案上傳就可以傳到對方那裡,就如此簡單。

上傳到哪裡? 對方有很多人?

引用:
所以想要寫一個
一、能夠超級智障、簡單的傳文字、傳檔案軟體。
二、你只要有對方的IP跟埠號就可以。
三、需要識別雙方Mac Address。

一 跟 二 or 一 跟 三 可能有衝突

引用:
我初步的想法是在臉書或對岸的微博上,寫下加密的傳送資料,接收者只要把傳送資料剪下貼上,就可以取得互連的所有資訊。之後就能直接一對一對口直接傳送。

你寫的軟體(電腦)可能要一直開著, 你寫的軟體也要能散布給對方

如果沒太多要求的話 file.io 是不是能夠接受 (<2GB)
https://www.file.io/
也支援API上傳

沒問題 2024-10-31 09:17 PM

引用:
作者kindalo
上傳到哪裡? 對方有很多人?


主要是想傳到對岸,當然也可以到美國。
因為兩地都有親人跟同事在。

這個上傳的意思就是像微信一樣,把自已想傳的檔案點擊,就會傳過去,不用經過中間的免空之類的。

引用:
作者kindalo
一 跟 二 or 一 跟 三 可能有衝突


如果先把問題縮小到只在自已家的私有網路互通又該怎麼做?

引用:
作者kindalo
你寫的軟體(電腦)可能要一直開著, 你寫的軟體也要能散布給對方


雙方在對傳的時候當然都是開著電腦不關的。

引用:
作者kindalo
如果沒太多要求的話 file.io 是不是能夠接受 (<2GB)
https://www.file.io/
也支援API上傳


這個暫時免了。

引用:
作者michelle-lai529
這些要做起來並不容易,通訊,協定,封包定義,監聽......每個都要手工解決,記得很久以前有linux上的Pidgin好像可以,忘了有沒有支援點對點直連的了


你說的問題,老子閒時間特別多。

anderson1127 2024-10-31 09:37 PM

引用:
作者沒問題

我就只是想傳個東西,管他是什麼,我只要負責上網,打字,把檔案上傳就可以傳到對方那裡,就如此簡單。

所以想要寫一個
一、能夠超級智障、簡單的傳文字、傳檔案軟體。
二、你只要有對方的IP跟埠號就可以。
三、需要識別雙方Mac Address。
[delete]


其實,如果妳會建立一個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

除非是孩子的功課程式 , 那就乖乖寫程式吧!! :ase :ase :ase


所有的時間均為GMT +8。 現在的時間是01:40 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2024。