Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "net"
- "os"
- "fmt"
- )
- func gogopowerrangers(commSock net.Conn) {
- for ;; { // Server loop to interact with the client
- buf := make([]byte, 256) // for buffering // but redecl :-(
- bufLen, err := commSock.Read(buf) // try a read buffer from the Sock
- if err != nil {
- fmt.Fprintf(os.Stderr, "Error when reading from socket: %s\n", err)
- return
- }
- if bufLen == 0 {
- fmt.Printf("Connection closed by remote host\n")
- return
- }
- hashMap := map[string]string {
- "mdp": "Connexion réussie",
- }
- buf = buf[:bufLen-1] // this is to ignore '\n', counting from 0
- s := string(buf)
- reponse := "Mauvais mot de passe"
- if val, ok := hashMap[s]; ok {
- reponse = val
- }
- //fmt.Printf("Length of read buffer = %s\n",s)
- //fmt.Printf("Length of read buffer = %s\n",reponse)
- //fmt.Printf("Client at %s says '%s'\n", commSock.RemoteAddr(), buf)
- // prepare the response
- writelen, err := commSock.Write([]byte("Serv ACK! > "+reponse+"\n"))
- if err != nil {
- fmt.Fprintf(os.Stderr, "Could not write to socket: %s\n", err)
- } else {
- fmt.Printf("Wrote %d bytes to socket\n", writelen)
- }
- // send a 'response' to the client via the same connScock
- writtenLen, err := commSock.Write([]byte(reponse))
- if err != nil {
- fmt.Fprintf(os.Stderr, "Could not write to socket: %s\n", err)
- } else {
- fmt.Printf("Wrote %d bytes to socket\n", writtenLen)
- }
- exit()
- }//for
- }
- func exit() {
- os.Exit(0)
- }
- func main() {
- sockListener, err := net.Listen("tcp", "127.0.0.1:2056")
- if err != nil {
- fmt.Fprintf(os.Stderr, "Could not listen on socket: %s\n", err)
- return
- }
- for {
- commSock, err := sockListener.Accept()
- if err != nil {
- fmt.Fprintf(os.Stderr, "Could not accept connection on socket: %s\n", err)
- return
- }
- go gogopowerrangers(commSock)
- }
- }
- client :
- package main
- import "net"
- import "fmt"
- import "bufio"
- import "os"
- func main() {
- // connect to this socket
- conn, _ := net.Dial("tcp", "127.0.0.1:2056")
- for {
- // read in input from stdin
- reader := bufio.NewReader(os.Stdin)
- fmt.Print("Password: ")
- text, _ := reader.ReadString('\n')
- // send to socket
- fmt.Fprintf(conn, text)
- // listen for reply
- message, _ := bufio.NewReader(conn).ReadString('\n')
- fmt.Print("Message from server: "+message)
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement