Golang TCP -server

Golang TCP -server
I denne guiden lærer vi hvordan du oppretter en enkel TCP -server som godtar innkommende tilkoblinger til serveren. Serveren vil svare med en melding og gjeldende data og tid.

Dette er en god tutorial for nybegynnere som vil bli kjent med Go Net -pakken og hvordan du kan håndtere forespørsler.

Starter

Selv om opplæringen er veldig nybegynnervennlig, anbefaler vi å ha det grunnleggende om å jobbe med GO -språket for hånden.

Å forstå hvordan man jobber med GO -pakker er også veldig gunstig.

Golang Net Package

Nettpakken er en del av Go Standard Library. Det brukes til å levere bærbart grensesnitt for å jobbe med Network I/O -operasjoner. Dette inkluderer TCP/IP, UDP, DNS og UNIX -domenetakskontakter.

Vi bruker denne pakken til å opprette en TCP -server.

Bygge en enkel TCP -server

La oss nå komme inn i koden og lære å bygge en TCP -server. Begynn med å opprette en GO -fil for å skrive koden din:

mkdir tcp-server
Touch Server.gå

Rediger filen med den valgte tekstredigereren din og skriv inn linjene nedenfor:

pakkehoved
import (
"FMT"
"nett"
"OS"
)

Linjene ovenfor definerer pakken som en frittstående pakke og importerer de nødvendige pakkene.

Neste trinn er å definere parametrene for serveren vår. Vi kan definere disse som globale variabler som:

const (
Vert = "localhost"
Port = "9001"
Type = "TCP"
)

Neste trinn er å lytte etter innkommende tilkoblinger. Vi kan gjøre dette ved hjelp av nettet.Lyttemetode. Funksjonens syntaks er som vist:

func lytt (nettverk, adresse streng) (lytter, feil)

Det tar tilkoblingstypen (for eksempel TCP, TCP4, TCP6, UNIX eller Unixpacket), verten og tilkoblingsporten. Funksjonen vil returnere en lytteforbindelse på den spesifiserte adressen.

Et eksempelkode er som vist:

Hør, feil: = netto.Lytt (type, vert+":"+port)
Hvis feil != nil
Logg.Fatal (feil)
OS.Avslutt (1)

Vi sjekker om lytteren møter noen feil, hvis det er sant, den logger feilmeldingen og finnes med en statuskode på 1.

Vi må også lukke lytteren etter at serveren er avsluttet. Vi kan gjøre dette ved hjelp av utsettingsnøkkelordet og den nære metoden

lytte.Lukk()

Neste trinn er å kontinuerlig lytte etter tilkoblinger. Vi kan gjøre dette ved hjelp av en for loop som:

for
Conn, feil: = Lytt.Aksepterer()
Hvis feil != nil
Logg.Fatal (feil)
OS.Avslutt (1)
// Håndter innkommende tilkoblinger

For å håndtere innkommende forespørsler, kan vi opprette en funksjon som:

func takhøydepunkt (conn nett.Conn)
// lagre innkommende data
buffer: = make ([] byte, 1024)
_, feil: = conn.Les (buffer)
Hvis feil != nil
Logg.Fatal (feil)

// svar
Tid: = Tid.Nå().Format ("Mandag, 02-jan-06 15:04:05 MST")
Conn.Skriv ([] byte ("Hei tilbake!"))
Conn.Skriv ([] byte (tid))
// Lukk Conn
Conn.Lukk()

I eksemplet over definerer vi en funksjon som tar Conn of Type Net.Conn struct som parameter.

Vi definerer deretter en ny buffer for å lagre innkommende data i størrelse 1024. Neste blokkering leser gjeldende tid ved å bruke tiden.Nå () pakke.

Ved hjelp av skrivemetoden kan vi skrive tiden og en streng til klienten. Endelig setter vi Conn.Lukk () for å lukke forbindelsen.

Den fulle kildekoden er som vist:

pakkehoved
import (
"Logg"
"nett"
"OS"
"tid"
)
const (
Vert = "localhost"
Port = "9001"
Type = "TCP"
)
func main ()
Hør, feil: = netto.Lytt (type, vert+":"+port)
Hvis feil != nil
Logg.Fatal (feil)
OS.Avslutt (1)

// Lukk lytter
utsetter lytting.Lukk()
for
Conn, feil: = Lytt.Aksepterer()
Hvis feil != nil
Logg.Fatal (feil)
OS.Avslutt (1)

Gå håndtakIncomingRequest (Conn)


func takhøydepunkt (conn nett.Conn)
// lagre innkommende data
buffer: = make ([] byte, 1024)
_, feil: = conn.Les (buffer)
Hvis feil != nil
Logg.Fatal (feil)

// svar
Tid: = Tid.Nå().Format ("Mandag, 02-jan-06 15:04:05 MST")
Conn.Skriv ([] byte ("Hei tilbake!\ n "))
Conn.Skriv ([] byte (tid))
// Lukk Conn
Conn.Lukk()

Kompilere og kjøre server

Når du er fullført, lagre filen og kjør kommandoen nedenfor for å kompilere lytteren til en binær:

Gå og bygg serveren.gå

Kjør deretter serveren som:

./server.EXE

Kommandoen ovenfor skal kjøre TCP -serveren, og vi kan koble til den.

Testing av TCP -serveren

For å teste TCP -serveren, kan du bruke NetCat ved å bruke kommandoen:

NC Localhost 9001

Neste, send en melding som:

Hei!

Serveren skal svare med en hei rygg og gjeldende dato og tid.

Hei tilbake!
Tirsdag 01-feb-22 18:03:56 Spis

Konklusjon

Og med det har vi konkludert med opplæringen vår. Denne guiden introduserer deg for det grunnleggende om å jobbe med nettpakken ved å opprette en TCP -server.

Takk for at du leste!