On Sun, Nov 12, 2017, 10:03 AM Justin Israel <justinisr...@gmail.com> wrote:
> > > On Sat, Nov 11, 2017, 9:55 PM <2891132l...@gmail.com> wrote: > >> this is the server program: >> >>> package main >>> >>> import ( >>> "fmt" >>> "net" >>> "os" >>> >> "strings" >>> ) >>> >>> func main() { >>> >>> listener, err := net.Listen("tcp", "0.0.0.0:400") >>> >> checkError(err) >>> for i := 0; i < 10; i++ { >>> conn, err := listener.Accept() >>> if err != nil { >>> continue >>> } >>> handleClient(conn) >>> conn.Close() >>> } >>> } >>> func handleClient(conn net.Conn) { >>> var buf [512]byte >>> for { >>> n, err := conn.Read(buf[0:]) >>> if err != nil { >>> return >>> } >>> rAddr := conn.RemoteAddr() >>> fmt.Println("receive from client", rAddr.String(), string(buf[0:n])) >>> >> n, err2 := conn.Write([]byte("welcome client!")) >>> >> if err2 != nil { >>> return >>> } >>> >> aa := string("nice to meet you") >>> if strings.Contains(string(buf[0:n]), aa) { >>> n, err2 = conn.Write([]byte("nice to meet you too")) >>> >> if err2 != nil { >>> return >>> } >>> } >>> } >>> } >>> func checkError(err error) { >>> if err != nil { >>> fmt.Fprintf(os.Stderr, "fatal error: %s", err.Error()) >>> os.Exit(1) >>> } >>> } >>> >> >>> >> this is the client program: >> package main >> >> import ( >> "fmt" >> "net" >> "os" >> ) >> >> func main() { >> var buf [512]byte >> if len(os.Args) != 2 { >> fmt.Fprintf(os.Stderr, "usage:%s host:port\n", os.Args[0]) >> } >> _, err := net.ResolveTCPAddr("tcp", "127.0.0.1:400") >> checkError(err) >> conn, err := net.Dial("tcp", "127.0.0.1:400") >> checkError(err) >> rAddr := conn.RemoteAddr() >> n, err := conn.Write([]byte("hello server!")) >> checkError(err) >> n, err = conn.Write([]byte(" nice to meet you")) >> checkError(err) >> n, err = conn.Read(buf[0:]) >> if err != nil { >> return >> } >> checkError(err) >> fmt.Println("reply from server", rAddr.String(), string(buf[0:n])) >> conn.Close() >> os.Exit(0) >> } >> func checkError(err error) { >> if err != nil { >> fmt.Fprintf(os.Stderr, "fatal error: %s", err.Error()) >> os.Exit(1) >> } >> } >> >> >> Just a little change and I run it successfully.But I am doubt why it >> can't print "nice to meet you too"??And how to solve it?? >> > > Your server does the following on a new connection > > n, err := conn.Read(buf[0:]) > ... > n, err2 := conn.Write([]byte("welcome client!")) > > Then your client is doing the following on the start of the connection > > n, err := conn.Write([]byte("hello server!")) > ... > > n, err = conn.Write([]byte(" nice to meet you")) > > Both the client and server are blocking on writing and no one is doing any > reading. Make sure your client does a read after elderly > Thanks autocorrect. I have no problem with the elderly, but it has no business here in this response. successful write, if you are choosing to do a request/reply pattern. > >> -- >> 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. >> For more options, visit https://groups.google.com/d/optout. >> > -- 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. For more options, visit https://groups.google.com/d/optout.