Visual_Basic_NET — Αναλυτικός οδηγός εξάσκησης — DedSec Project
VB.NET — μετατροπή αριθμού θύρας και έλεγχος ορίων Συνάρτηση σε .NET console project Με συμβατό SDK αναμένεται 8080. Η Integer.TryParse ελέγχει αν το κείμενο είναι ακέραιος, αλλά μόνο οι…
VB.NET — μετατροπή αριθμού θύρας και έλεγχος ορίων
Συνάρτηση σε .NET console project
Imports System
Module Program
Function ParsePort(text As String) As Integer
Dim value As Integer
If Not Integer.TryParse(text, value) OrElse value < 1 OrElse value > 65535 Then
Throw New ArgumentException("invalid port")
End If
Return value
End Function
Sub Main()
Console.WriteLine(ParsePort("8080"))
End Sub
End Module
Με συμβατό SDK αναμένεται 8080. Η Integer.TryParse ελέγχει αν το κείμενο είναι ακέραιος, αλλά μόνο οι επόμενες συγκρίσεις ελέγχουν τα όρια θύρας 1–65535. Η OrElse είναι συντομοκυκλωτική λογική συνθήκη.
Δοκιμές απόρριψης
Έλεγξε "", "abc", "0", "-1", "65536" και "65535". Οι πέντε πρώτες πρέπει να προκαλούν ArgumentException και η τελευταία να γίνεται δεκτή. Μη χρησιμοποιείς Val σε μη έμπιστο κείμενο γιατί μπορεί να δεχτεί πρόθεμα και να αγνοήσει άκυρο suffix.
Στατικό και δυναμικό σφάλμα
Επέστρεψε προσωρινά String από συνάρτηση Integer και παρατήρησε το diagnostic του compiler. Ξεχώρισε σφάλμα τύπου από έγκυρο ακέραιο που απορρίπτει ο επιχειρησιακός κανόνας. Σημείωσε dotnet --info και πραγματικά αποτελέσματα· δεν δηλώνεται .NET build εδώ.
Ξεχώρισε parsing από επιχειρησιακό συμβόλαιο
Η TryParse εφαρμόζει κανόνες αριθμητικής μετατροπής που εξαρτώνται και από overload ή culture. Σε εξωτερικό πρωτόκολλο, αντί για φόρμα ανθρώπου, όρισε ρητά επιτρεπτό ύφος αριθμών και κουλτούρα. Δοκίμασε " 8080 ", "+8080", "08080" και ένα μη ASCII ψηφίο: μπορεί να είναι αριθμητικά αναγνωρίσιμες περιπτώσεις αλλά όχι αποδεκτές σύμφωνα με τον κανόνα του συστήματος. Ξεχώρισε τη σωστή σύνταξη μιας θύρας από το δικαίωμα σύνδεσης προς συγκεκριμένη διεύθυνση: η τιμή 443 δεν δίνει αυτόματα άδεια χρήσης ενός endpoint. Έλεγξε άκρα 1 και 65535 και κατέγραψε .NET target framework και ακριβή parser overload.