init tcp_test
This commit is contained in:
parent
1a25129495
commit
7e6125066e
4 changed files with 312 additions and 50 deletions
|
|
@ -2,51 +2,60 @@ package main
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"time"
|
||||
)
|
||||
|
||||
const (
|
||||
HOST = "0.0.0.0"
|
||||
PORT = "8080"
|
||||
TYPE = "tcp"
|
||||
)
|
||||
|
||||
func main() {
|
||||
listen, err := net.Listen(TYPE, HOST+":"+PORT)
|
||||
println("Listening on", HOST+":"+PORT)
|
||||
addr := "192.168.1.153:8080"
|
||||
fmt.Printf("Starting TCP server on port %s\n", addr)
|
||||
//Address to bind to
|
||||
//Resolve address
|
||||
addr_, err := net.ResolveTCPAddr("tcp", addr)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
os.Exit(1)
|
||||
fmt.Printf("Error resolving address: %s", err.Error())
|
||||
return
|
||||
}
|
||||
// close listener
|
||||
defer listen.Close()
|
||||
//Listen for incoming connections
|
||||
listener, err := net.ListenTCP("tcp", addr_)
|
||||
if err != nil {
|
||||
fmt.Printf("Error starting server: %s", err.Error())
|
||||
return
|
||||
}
|
||||
defer listener.Close()
|
||||
|
||||
for {
|
||||
conn, err := listen.Accept()
|
||||
//Accept incoming connection
|
||||
conn, err := listener.AcceptTCP()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
os.Exit(1)
|
||||
fmt.Printf("Error accepting connection: %s", err.Error())
|
||||
continue
|
||||
}
|
||||
go handleRequest(conn)
|
||||
go handleConnection(conn)
|
||||
}
|
||||
}
|
||||
|
||||
func handleRequest(conn net.Conn) {
|
||||
// incoming request
|
||||
func handleConnection(conn *net.TCPConn) {
|
||||
defer conn.Close()
|
||||
fmt.Printf("New connection from %s\n", conn.RemoteAddr().String())
|
||||
|
||||
buffer := make([]byte, 1024)
|
||||
_, err := conn.Read(buffer)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
for {
|
||||
//Read up to 1024 bytes
|
||||
n, err := conn.Read(buffer)
|
||||
if err != nil {
|
||||
fmt.Printf("Error reading from connection: %s", err.Error())
|
||||
return
|
||||
}
|
||||
if n == 0 {
|
||||
return
|
||||
}
|
||||
fmt.Printf("Received message: %s\n", string(buffer[:n]))
|
||||
//Echo message back
|
||||
// _, err = conn.Write(buffer[:n])
|
||||
_, err = conn.Write([]byte("1"))
|
||||
if err != nil {
|
||||
fmt.Printf("Error writing to connection: %s", err.Error())
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
// write data to response
|
||||
time := time.Now().Format(time.ANSIC)
|
||||
fmt.Printf("Message recived: %v. Received time: %v", string(buffer[:]), time)
|
||||
conn.Write([]byte("1"))
|
||||
// conn.Write([]byte(responseStr))
|
||||
|
||||
// close conn
|
||||
conn.Close()
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue