First commit
This commit is contained in:
parent
b378377069
commit
deb52470e5
5 changed files with 134 additions and 0 deletions
44
Client.go
Normal file
44
Client.go
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const PAYLOAD = "Test data"
|
||||||
|
|
||||||
|
func StartClient() net.Conn {
|
||||||
|
conn := SetupClient(HOST, PORT)
|
||||||
|
|
||||||
|
return conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func SetupClient(host string, port string) net.Conn {
|
||||||
|
// Connect to the server
|
||||||
|
conn, err := net.Dial("tcp", host+":"+port)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
SendData(conn)
|
||||||
|
|
||||||
|
return conn
|
||||||
|
}
|
||||||
|
|
||||||
|
func SendData(conn net.Conn) {
|
||||||
|
counter := 0
|
||||||
|
|
||||||
|
for counter < 10 {
|
||||||
|
// Send some data to the server
|
||||||
|
_, err := conn.Write([]byte(PAYLOAD + " " + strconv.Itoa(counter)))
|
||||||
|
if err != nil {
|
||||||
|
fmt.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
counter++
|
||||||
|
time.Sleep(100 * time.Millisecond)
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,31 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const HOST = "localhost"
|
||||||
|
const PORT = "8080"
|
||||||
|
|
||||||
|
// Hello returns a greeting for the named person.
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
go startServer()
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
client := StartClient()
|
||||||
|
|
||||||
|
closeConnection("Client", client)
|
||||||
|
|
||||||
|
time.Sleep(1 * time.Second)
|
||||||
|
}
|
||||||
|
|
||||||
|
func log(msg string) {
|
||||||
|
fmt.Println(time.Now().Format(time.RFC822) + " " + msg)
|
||||||
|
}
|
||||||
|
|
||||||
|
func closeConnection(id string, conn net.Conn) {
|
||||||
|
log(id + " connection closed: " + conn.LocalAddr().String())
|
||||||
|
conn.Close()
|
||||||
|
}
|
54
Server.go
Normal file
54
Server.go
Normal file
|
@ -0,0 +1,54 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"net"
|
||||||
|
)
|
||||||
|
|
||||||
|
func startServer() net.Conn {
|
||||||
|
return setupServer(PORT)
|
||||||
|
}
|
||||||
|
|
||||||
|
func setupServer(port string) net.Conn {
|
||||||
|
// Listen for incoming connections on port 8080
|
||||||
|
ln, err := net.Listen("tcp", ":"+port)
|
||||||
|
if err != nil {
|
||||||
|
log(err.Error())
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Accept incoming connections and handle them
|
||||||
|
for {
|
||||||
|
conn, err := ln.Accept()
|
||||||
|
if err != nil {
|
||||||
|
log(err.Error())
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle the connection in a new goroutine
|
||||||
|
go handleConnection(conn)
|
||||||
|
return conn
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleConnection(conn net.Conn) {
|
||||||
|
// Close the connection when we're done
|
||||||
|
defer closeConnection("Server", conn)
|
||||||
|
|
||||||
|
for {
|
||||||
|
// Read incoming data
|
||||||
|
buf := make([]byte, 1024)
|
||||||
|
|
||||||
|
_, err := conn.Read(buf)
|
||||||
|
if err != nil {
|
||||||
|
//read = false
|
||||||
|
log(err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Print the incoming data
|
||||||
|
fmt.Printf("Received: %s \n", buf)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
2
build.cmd
Normal file
2
build.cmd
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
go mod tidy
|
||||||
|
go build
|
3
go.mod
Normal file
3
go.mod
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module networkstats
|
||||||
|
|
||||||
|
go 1.24.3
|
Loading…
Add table
Add a link
Reference in a new issue