Sobes.tech
Junior

Ποια είναι η διαφορά μεταξύ των πρωτοκόλλων TCP και UDP;

sobes.tech AI

Απάντηση από AI

TCP - προσανατολισμένο στη σύνδεση, εγγυάται την παράδοση και τη σειρά των πακέτων. UDP - χωρίς εγκατάσταση σύνδεσης, δεν εγγυάται την παράδοση και τη σειρά, αλλά είναι πιο γρήγορο.

Βασικές διαφορές:

Χαρακτηριστικό TCP UDP
Προσανατολισμός Με εγκατάσταση σύνδεσης Χωρίς εγκατάσταση σύνδεσης
Αξιοπιστία Υψηλή (εγγυάται την παράδοση) Χαμηλή (δεν εγγυάται την παράδοση)
Σειρά Εγγυημένη Μη εγγυημένη
Έλεγχος ροής Ναι Όχι
Έλεγχος σφαλμάτων Ναι (μεταφορά και σειρά) Όχι (βασικός έλεγχος checksum)
Ταχύτητα Χαμηλότερη Υψηλότερη
Χρήση HTTP, FTP, SSH DNS, DHCP, online παιχνίδια, streaming

Παράδειγμα κώδικα για αποστολή δεδομένων μέσω TCP σε Go:

package main

import (
	"net"
	"log"
)

func main() {
	conn, err := net.Dial("tcp", "localhost:8080") // Δημιουργία σύνδεσης TCP
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close() // Εγγύηση κλεισίματος σύνδεσης

	_, err = conn.Write([]byte("Hello, TCP!")) // Αποστολή δεδομένων
	if err != nil {
		log.Fatal(err)
	}
}

Παράδειγμα κώδικα για αποστολή δεδομένων μέσω UDP σε Go:

package main

import (
	"net"
	"log"
)

func main() {
	addr, err := net.ResolveUDPAddr("udp", "localhost:8081") // Ορισμός διεύθυνσης UDP
	if err != nil {
		log.Fatal(err)
	}

	conn, err := net.DialUDP("udp", nil, addr) // Δημιουργία "σύνδεσης" UDP (χωρίς συνεδρία)
	if err != nil {
		log.Fatal(err)
	}
	defer conn.Close() // Κλείσιμο socket

	_, err = conn.Write([]byte("Hello, UDP!")) // Αποστολή δεδομένων
	if err != nil {
		log.Fatal(err)
	}
}