Sobes.tech
Junior

Ի՞նչ է TCP և UDP պրոտոկոլների տարբերությունը։

sobes.tech AI

Պատասխան AI-ից

TCP - կապի վրա հիմնված, երաշխավորում է առաքումը և պակետների կարգը: UDP - առանց կապի հաստատման, չի երաշխավորում առաքումը և կարգը, բայց ավելի արագ:

Հիմնական տարբերությունները:

Գծանշան TCP UDP
Մտադրություն Կապի հաստատմամբ Անկախ կապի հաստատումից
Վստահություն Բարձր (երաշխավորում է առաքումը) Նվազ (չի երաշխավորում առաքումը)
Կարգը Երաշխավորված Չի երաշխավորվում
Հոսքի կառավարում Կան Չկա
Խնդիրների վերահսկում Կան (փոխանցում և կարգի վերահսկում) Չկա (հիմնական հաշվեկշիռ)
Արագություն Փոքր Ավելի բարձր
Օգտագործում HTTP, FTP, SSH DNS, DHCP, առցանց խաղեր, հոսքային մեդիա

Նմուշ կոդ 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() // Սոկետի փակում

	_, err = conn.Write([]byte("Hello, UDP!")) // Տվյալների ուղարկում
	if err != nil {
		log.Fatal(err)
	}
}