Frederic G. MARAND 4 years ago
parent
commit
55b3a6670d

+ 10 - 0
.idea/runConfigurations/WG_Final.xml

@@ -4,6 +4,16 @@
     <working_directory value="$PROJECT_DIR$/final" />
     <go_parameters value="-o wg" />
     <parameters value="-self 192.16.8.19.127" />
+    <EXTENSION ID="net.ashald.envfile">
+      <option name="IS_ENABLED" value="false" />
+      <option name="IS_SUBST" value="false" />
+      <option name="IS_PATH_MACRO_SUPPORTED" value="false" />
+      <option name="IS_IGNORE_MISSING_FILES" value="false" />
+      <option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
+      <ENTRIES>
+        <ENTRY IS_ENABLED="true" PARSER="runconfig" />
+      </ENTRIES>
+    </EXTENSION>
     <kind value="DIRECTORY" />
     <filePath value="$PROJECT_DIR$/" />
     <package value="code.osinet.fr/fgm/whispering_gophers" />

+ 10 - 0
.idea/runConfigurations/WG_Step_1.xml

@@ -3,6 +3,16 @@
     <module name="whispering_gophers" />
     <working_directory value="$PROJECT_DIR$/part1" />
     <go_parameters value="-o wg" />
+    <EXTENSION ID="net.ashald.envfile">
+      <option name="IS_ENABLED" value="false" />
+      <option name="IS_SUBST" value="false" />
+      <option name="IS_PATH_MACRO_SUPPORTED" value="false" />
+      <option name="IS_IGNORE_MISSING_FILES" value="false" />
+      <option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
+      <ENTRIES>
+        <ENTRY IS_ENABLED="true" PARSER="runconfig" />
+      </ENTRIES>
+    </EXTENSION>
     <kind value="DIRECTORY" />
     <filePath value="$PROJECT_DIR$/" />
     <package value="code.osinet.fr/fgm/whispering_gophers" />

+ 24 - 0
.idea/runConfigurations/WG_Step_4_Dial.xml

@@ -0,0 +1,24 @@
+<component name="ProjectRunConfigurationManager">
+  <configuration default="false" name="WG Step 4 Dial" type="GoApplicationRunConfiguration" factoryName="Go Application">
+    <module name="whispering_gophers" />
+    <working_directory value="$PROJECT_DIR$/part4" />
+    <go_parameters value="-o wg" />
+    <parameters value="-dial localhost:8000" />
+    <EXTENSION ID="net.ashald.envfile">
+      <option name="IS_ENABLED" value="false" />
+      <option name="IS_SUBST" value="false" />
+      <option name="IS_PATH_MACRO_SUPPORTED" value="false" />
+      <option name="IS_IGNORE_MISSING_FILES" value="false" />
+      <option name="IS_ENABLE_EXPERIMENTAL_INTEGRATIONS" value="false" />
+      <ENTRIES>
+        <ENTRY IS_ENABLED="true" PARSER="runconfig" />
+      </ENTRIES>
+    </EXTENSION>
+    <kind value="DIRECTORY" />
+    <filePath value="$PROJECT_DIR$/" />
+    <package value="code.osinet.fr/fgm/whispering_gophers" />
+    <directory value="$PROJECT_DIR$/part4" />
+    <output_directory value="$PROJECT_DIR$/part4" />
+    <method v="2" />
+  </configuration>
+</component>

+ 26 - 2
part4/main.go

@@ -44,7 +44,12 @@ type Message struct {
 func main() {
 	flag.Parse()
 
-	// TODO: Launch dial in a new goroutine, passing in *dialAddr.
+	// Launch dial in a new goroutine, passing in *dialAddr.
+	if *dialAddr != "" {
+		go dial(*listenAddr)
+	} else {
+		log.Println("Not dialing")
+	}
 
 	l, err := net.Listen("tcp", *listenAddr)
 	if err != nil {
@@ -74,5 +79,24 @@ func serve(c net.Conn) {
 }
 
 func dial(addr string) {
-	// TODO: put the contents of the main function from part 2 here.
+	// put the contents of the main function from part 2 here.
+	c, err := net.Dial("tcp4", *dialAddr)
+	if err != nil {
+		log.Fatal(err)
+	}
+
+	s := bufio.NewScanner(os.Stdin)
+	e := json.NewEncoder(c)
+	for s.Scan() {
+		m := Message{Body: s.Text()}
+		err := e.Encode(m)
+		if err != nil {
+			log.Fatal(err)
+		}
+	}
+	if err := s.Err(); err != nil {
+		log.Fatal(err)
+	} else {
+		os.Exit(0)
+	}
 }