記錄學習內容。看網路上大大們的文章和影片,做些紀錄。
以下內容大多來自網路上大大們的文章。
還不了解,內容可能有錯誤。
用兩個C# WPF程式 ,分別放到不同的電腦 來溝通 。可以用UPD 或 TCP 。
先複習一下UDP、TCP :
AWS EC2 設定Ubuntu 、了解TCP與UDP、查看封包內容
https://ithelp.ithome.com.tw/articles/10206781
TCP 程式來源:
https://dotblogs.com.tw/kevintan1983/2010/10/15/18348
//取得本機IP
IPAddress[] ipa = Dns.GetHostAddresses(hostName);
Debug.WriteLine("本機IP=" + ipa[0].ToString());
但是顯示的會是ipv6的樣子:
fe80::c046...
ipv4參考解答:
Get local IP address
https://stackoverflow.com/questions/6803073/get-local-ip-address
解答2的方式,跟UDP有關。
IPAddress.Any 印出來是 0.0.0.0
https://docs.microsoft.com/zh-tw/dotnet/api/system.net.ipaddress?view=netcore-3.1
Any 提供指示伺服器必須在所有網路介面上接聽用戶端活動的 IP 位址。 此欄位為唯讀。
所以這樣寫 是指 在這台電腦所有的ip 的 1234 port 都要監聽 ?
IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 1234);
應該就是這個意思 , 這樣寫的話,這台電腦的所有ip的1234port 都可以連線,
ip錯誤會有:
連線嘗試失敗,因為連線對象有一段時間並未正確回應,或是連線建立失敗,因為連線的主機無法回應。 [::ffff:192.168.56.3]:1234
port錯誤會有:
無法連線,因為目標電腦拒絕連線。 [::ffff:192.168.56.1]:1235
目前問題:
如果不想寫 IPEndPoint ipe = new IPEndPoint(IPAddress.Any, 1234);
,想要指定ip,而不是IPAddress.Any。 要怎麼辦 ?
參考:
https://docs.microsoft.com/zh-tw/dotnet/api/system.net.ipendpoint?view=netcore-3.1
Best way to create IPEndpoint from string
https://stackoverflow.com/questions/2727609/best-way-to-create-ipendpoint-from-string/12044845
參考解答4:
string serverIP = "192.168.0.1";
int port = 8000;
IPEndPoint remoteEP = new IPEndPoint(IPAddress.Parse(serverIP), port);
程式來源:
C# 基於 UDP-Socket 的 UdpClient 使用方法
https://lolikitty.pixnet.net/blog/post/109168079
Can I set the timeout for UdpClient in C#?
https://stackoverflow.com/questions/2281441/can-i-set-the-timeout-for-udpclient-in-c
UdpClient 類別
https://docs.microsoft.com/zh-tw/dotnet/api/system.net.sockets.udpclient?view=netcore-3.1
其他:
Wireshark 指令 ,看這張圖:
https://packetlife.net/media/library/13/Wireshark_Display_Filters.pdf
如何用wireshark 只看 TCP ?
tcp
如何用wireshark 只看 UDP ?
udp