Golang TCP Server

Golang TCP Server
W tym przewodniku dowiemy się, jak utworzyć prosty serwer TCP, który akceptuje przychodzące połączenia z serwerem. Serwer odpowie komunikat i bieżące dane i czas.

To dobry samouczek dla początkujących, którzy chcą zapoznać się z pakietem GO i sposobem obsługi żądań.

Rozpoczęcie pracy

Chociaż samouczek jest bardzo przyjazny dla początkujących, zalecamy podstawy pracy z językiem Go.

Zrozumienie, jak pracować z pakietami Go, jest również bardzo korzystne.

Pakiet netto Golang

Pakiet netto jest częścią standardowej biblioteki Go. Służy do dostarczania przenośnego interfejsu do pracy z operacjami sieci we/wy sieciowej. Obejmuje to gniazda domeny TCP/IP, UDP, DNS i UNIX.

Użyjemy tego pakietu do utworzenia serwera TCP.

Budowanie prostego serwera TCP

Pozwól nam teraz wejść do kodu i dowiedz się, jak budować serwer TCP. Zacznij od utworzenia pliku Go, aby napisać kod:

Mkdir TCP-Server
serwer dotykowy.Iść

Edytuj plik z wybranym edytorem tekstu i wprowadź poniższe wiersze:

Pakiet Main
import (
„FMT”
"internet"
„OS”
)

Powyższe linie definiują pakiet jako samodzielny pakiet i importuje wymagane pakiety.

Następnym krokiem jest zdefiniowanie parametrów dla naszego serwera. Możemy je zdefiniować jako zmienne globalne jako:

const (
Host = "localhost"
Port = "9001"
Type = "tcp"
)

Następnym krokiem jest słuchanie przychodzących połączeń. Możemy to zrobić za pomocą sieci.Metoda słuchania. Składnia funkcji jest taka jak pokazano:

FUNC Słuchaj (sieć, ciąg adresu) (słuchacz, błąd)

Bierze typ połączenia (taki jak TCP, TCP4, TCP6, UNIX lub UNIXPACKET), hosta i port połączenia. Funkcja zwróci połączenie słuchania na określonym adresie.

Przykładowy kod jest taki jak pokazano:

Słuchaj, err: = net.Słuchaj (typ, host+":"+port)
Jeśli err != zero
dziennik.Fatalny (err)
OS.Wyjście (1)

Sprawdzamy, czy słuchacz napotyka jakiekolwiek błędy, jeśli prawda, rejestruje komunikat o błędzie i istnieje z kodem stanu 1.

Musimy również zamknąć słuchacza po zakończeniu serwera. Możemy to zrobić za pomocą słowa kluczowego odroczenia i metody zamknięcia

Słuchać.Zamknąć()

Następnym krokiem jest ciągłe słuchanie połączeń. Możemy to zrobić za pomocą pętli dla:

Do
Conn, err: = słuchaj.Zaakceptować()
Jeśli err != zero
dziennik.Fatalny (err)
OS.Wyjście (1)
// obsługa połączeń przychodzących

Aby obsłużyć wszelkie przychodzące żądania, możemy utworzyć funkcję jako:

FUNC HANDEDINDACTINGREQUEST (CONN NET.Conn)
// przechowuj dane przychodzące
Bufor: = Make ([] bajt, 1024)
_, err: = conn.Odczyt (bufor)
Jeśli err != zero
dziennik.Fatalny (err)

// reagować
czas: = czas.Teraz().Format („Poniedziałek, 02-styl-06 15:04:05 mST”)
Conn.Napisz ([] bajt („Cześć!"))
Conn.Napisz ([] bajt (czas))
// Zamknij Conn
Conn.Zamknąć()

W powyższym przykładzie definiujemy funkcję, która przyjmuje conn typu netto.Conn struct jako parametr.

Następnie definiujemy nowy bufor do przechowywania przychodzących danych o rozmiarze 1024. Następny blok odczytuje bieżący czas za pomocą czasu.Teraz () pakiet.

Za pomocą metody zapisu możemy napisać czas i ciąg do klienta. Na koniec ustawiliśmy Conn.Zamknij (), aby zamknąć połączenie.

Pełny kod źródłowy jest jak pokazano:

Pakiet Main
import (
"dziennik"
"internet"
„OS”
"czas"
)
const (
Host = "localhost"
Port = "9001"
Type = "tcp"
)
func main ()
Słuchaj, err: = net.Słuchaj (typ, host+":"+port)
Jeśli err != zero
dziennik.Fatalny (err)
OS.Wyjście (1)

// Zamknij słuchacz
odrocz słuchaj.Zamknąć()
Do
Conn, err: = słuchaj.Zaakceptować()
Jeśli err != zero
dziennik.Fatalny (err)
OS.Wyjście (1)

Idź uchwyt wchodząca na Questerquest (Conn)


FUNC HANDEDINDACTINGREQUEST (CONN NET.Conn)
// przechowuj dane przychodzące
Bufor: = Make ([] bajt, 1024)
_, err: = conn.Odczyt (bufor)
Jeśli err != zero
dziennik.Fatalny (err)

// reagować
czas: = czas.Teraz().Format („Poniedziałek, 02-styl-06 15:04:05 mST”)
Conn.Napisz ([] bajt („Cześć!\N"))
Conn.Napisz ([] bajt (czas))
// Zamknij Conn
Conn.Zamknąć()

Serwer kompilacji i uruchom

Po zakończeniu zapisz plik i uruchom poniższe polecenie, aby skompilować słuchacza w binarnym:

Go Build Server.Iść

Następnie uruchom serwer jako:

./serwer.exe

Powyższe polecenie powinno uruchomić serwer TCP i możemy nawiązać z nim połączenia.

Testowanie serwera TCP

Aby przetestować serwer TCP, możesz użyć NetCat za pomocą polecenia:

NC LocalHost 9001

Następnie wyślij wiadomość jako:

Cześć!

Serwer powinien odpowiedzieć HI i bieżącą datą i godziną.

Witaj ponownie!
Wtorek, 01-FEB-22 18:03:56 Eat

Wniosek

I po tym zakończyliśmy nasz samouczek. Ten przewodnik przedstawia podstawy pracy z pakietem netto poprzez tworzenie serwera TCP.

Dziękuje za przeczytanie!