Sobes.tech
Junior — Middle

Дар кадом ҳолатҳо ва барои кадом мақсадҳо дар барномасозӣ сокетҳо истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дарсҳои барномасозӣ барои ташкил кардани муоширати шабакавӣ байни раванҷҳо истифода мешаванд, ки метавонанд дар як компютер ё дар компютерҳои гуногун ҷойгир бошанд. Дар Go, сӯкетҳо барои эҷоди барномаҳои мизоҷ-сервер, мубодилаи маълумот тавассути протоколҳои TCP ё UDP истифода мешаванд.

Ҳолатҳои асосии истифода:

  • Иҷрои серверҳо ва мизоҷони шабакавӣ (масалан, сервери веб, чат, бозӣҳо).
  • Мубодилаи маълумот байни системҳои тақсимшуда.
  • Эҷоди протоколҳои худ дар болои TCP/UDP.

Масалан, эҷоди сервери TCP дар Go:

package main

import (
    "fmt"
    "net"
)

func main() {
    ln, err := net.Listen("tcp", ":8080")
    if err != nil {
        panic(err)
    }
    defer ln.Close()

    for {
        conn, err := ln.Accept()
        if err != nil {
            fmt.Println("Хатои пайвастшавӣ:", err)
            continue
        }
        go handleConnection(conn)
    }
}

func handleConnection(conn net.Conn) {
    defer conn.Close()
    buf := make([]byte, 1024)
    n, err := conn.Read(buf)
    if err != nil {
        fmt.Println("Хатои хондан:", err)
        return
    }
    fmt.Println("Дастрас шуд:", string(buf[:n]))
    conn.Write([]byte("Салом аз сервер!"))
}