that's right 

On Friday, January 3, 2020 at 5:51:22 PM UTC+9, Amnon Baron Cohen wrote:
>
>         all := make(map[string]string) // create the map 
>         all["client request"] =  clientJob.name// append the client requests 
> on map
>
>
> gets called each time a request arrives.
> So a new empty map gets created each time a request arrives.
>
> The comment on the second line is wrong. The code does not "append" to the 
> map. It overwrites the "client request" element.
>
>
> On Friday, 3 January 2020 07:14:22 UTC, nks wrote:
>>
>> I am a beginner in Golang, This is a TCP server that receives requests 
>> and sends back a hello message to the client attached with the client's 
>> message(name)
>>  *how can I fill those requests into a map without erasing the previous 
>> request?*
>>  this is the code, the request is appended to the map but when the next 
>> comes, it replaces the current on.
>>
>>
>>  // Goroutine and Socket programming TCP server
>> //**************************************************
>> //                 TCP 
>> //----------------------------------------------------------
>>
>> package main
>>
>> import (
>>     "bufio"
>>     "fmt"
>>     "net"
>>     "time"
>> )
>> // check if there is any error and send a message. but it's better to remove 
>> panic later (it's not recommended to use it)
>> //***********************************************************************************************************************
>> func check(err error, message string) { 
>>     if err != nil {
>>         panic(err)
>>     }
>>     fmt.Printf("%s\n", message)
>> }
>> // Create the client structure that contains the client's name and the 
>> connection
>> //****************************************************************************
>>
>> type ClientJob struct { 
>>     name string
>>     conn net.Conn
>>
>> }
>>
>> // Create the function,the channel with type struct
>> //*********************************************************
>>
>> func generateResponses(clientJobs chan ClientJob) {
>>     for {
>>         // Wait for the next job to come off the queue.
>>         clientJob := <-clientJobs
>>
>>         // Do something thats keeps the CPU buys for a whole second.
>>         for start := time.Now(); time.Now().Sub(start) < time.Second; {
>>         }
>>
>>         // Send back the response.
>>
>>         clientJob.conn.Write([]byte("Hello, " + clientJob.name))
>>
>>         //clientJob:=make(chan ClientJob)
>>         //name:=make(chan string)
>>         //name:=<-clientJobs
>>
>>         all := make(map[string]string) // create the map 
>>         all["client request"] =  clientJob.name// append the client requests 
>> on map
>>         fmt.Println("All requests in the slice", all) // show all the 
>> requests in the map
>>
>>
>>
>>     }
>>
>> }
>>
>> // The main function
>> //***********************************
>>
>> func main() {
>>     clientJobs := make(chan ClientJob) // declare the channel used in the 
>> function above
>>     go generateResponses(clientJobs)  // put the function in a goroutine
>>
>>     ln, err := net.Listen("tcp", ":8080") // connect to the port 8080, it 
>> can be changed to any port if needed
>>     check(err, "Server is ready.") // show the message that the server is 
>> ready to receive
>>     //fmt.Println(<-clientJobs)
>>     // start checking the connection et receiving from the client and pass 
>> it into a goroutine and send it via a channel ClientJobs<-ClientJob{name, 
>> conn}
>>     for {
>>         conn, err := ln.Accept()
>>         check(err, "Accepted connection.")
>>
>>         go func() {
>>             buf := bufio.NewReader(conn)
>>
>>             for {
>>                 name, err := buf.ReadString('\n')
>>
>>                 if err != nil {
>>                     fmt.Printf("Client disconnected.\n")
>>                     break
>>                 }
>>
>>                 clientJobs <- ClientJob{name, conn} // pass the name and 
>> conn to the clientJobs channel
>>
>>             }
>>
>>
>>         }()
>>     }
>> }
>>
>>
>>
>>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/45c3ff6a-2401-4826-b112-be23c2dbc4bf%40googlegroups.com.

Reply via email to