mirror of
https://github.com/LucasVbr/mini-chat.git
synced 2026-07-09 06:57:53 +00:00
Commentaires + README
This commit is contained in:
Generated
+7
-150
@@ -2,27 +2,13 @@
|
|||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" name="Changes" comment="">
|
<list default="true" id="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" name="Changes" comment="">
|
||||||
<change afterPath="$PROJECT_DIR$/.idea/intellij-javadocs-4.0.1.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/uiDesigner.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/uiDesigner.xml" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/client/Client.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/Client.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/client/Client.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/Client.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/client/ListenThread.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/ListenThread.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/client/ListenThread.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/ListenThread.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/server/Server.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/server/Server.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/server/ThreadServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/server/ThreadServer.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/ui/FenetreClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/ui/FenetreClient.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/ui/FenetreClient.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/ui/FenetreClient.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/ui/FenetreErreur.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/ui/FenetreErreur.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/ui/FenetreServeur.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/ui/FenetreServeur.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/utils/AES.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils/AES.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/utils/RSA.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils/RSA.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/utils/ResolutionDeNom.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/utils/ResolutionDeNom.java" afterDir="false" />
|
|
||||||
</list>
|
|
||||||
<list id="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" name="Changes by burgu" comment="">
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/client/Client.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/Client.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/client/ListenThread.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/client/ListenThread.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/server/Server.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/server/Server.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/server/ThreadServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/server/ThreadServer.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/ui/FenetreServeur.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/ui/FenetreServeur.java" afterDir="false" />
|
|
||||||
</list>
|
</list>
|
||||||
|
<list id="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" name="Changes by burgu" comment="" />
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||||
@@ -40,92 +26,6 @@
|
|||||||
<component name="Git.Settings">
|
<component name="Git.Settings">
|
||||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||||
</component>
|
</component>
|
||||||
<component name="LineStatusTrackerManager">
|
|
||||||
<file path="$PROJECT_DIR$/src/client/ListenThread.java">
|
|
||||||
<ranges>
|
|
||||||
<range start1="0" end1="0" start2="0" end2="6" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="10" end1="11" start2="16" end2="21" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="14" end1="14" start2="24" end2="25" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="15" end1="15" start2="26" end2="28" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="17" end1="17" start2="30" end2="35" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="22" end1="22" start2="40" end2="46" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="47" end1="48" start2="71" end2="72" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
</ranges>
|
|
||||||
</file>
|
|
||||||
<file path="$PROJECT_DIR$/src/server/Server.java">
|
|
||||||
<ranges>
|
|
||||||
<range start1="0" end1="0" start2="0" end2="6" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="8" end1="9" start2="14" end2="22" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="10" end1="10" start2="23" end2="26" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="11" end1="11" start2="27" end2="31" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="12" end1="12" start2="32" end2="36" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="14" end1="14" start2="38" end2="43" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="17" end1="18" start2="46" end2="46" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="21" end1="21" start2="49" end2="55" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="35" end1="36" start2="69" end2="70" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="37" end1="37" start2="71" end2="72" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="39" end1="40" start2="74" end2="75" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="41" end1="41" start2="76" end2="77" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="42" end1="43" start2="78" end2="78" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="50" end1="55" start2="85" end2="85" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
</ranges>
|
|
||||||
</file>
|
|
||||||
<file path="$PROJECT_DIR$/src/client/Client.java">
|
|
||||||
<ranges>
|
|
||||||
<range start1="0" end1="0" start2="0" end2="6" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="7" end1="8" start2="13" end2="13" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="20" end1="20" start2="25" end2="33" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="22" end1="22" start2="35" end2="36" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="26" end1="26" start2="40" end2="42" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="28" end1="30" start2="44" end2="44" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="31" end1="31" start2="45" end2="46" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="36" end1="36" start2="51" end2="69" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="48" end1="48" start2="81" end2="88" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="105" end1="105" start2="145" end2="150" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="113" end1="113" start2="158" end2="163" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="118" end1="118" start2="168" end2="174" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="125" end1="126" start2="181" end2="182" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
</ranges>
|
|
||||||
</file>
|
|
||||||
<file path="$PROJECT_DIR$/src/ui/FenetreServeur.java">
|
|
||||||
<ranges>
|
|
||||||
<range start1="0" end1="0" start2="0" end2="6" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="5" end1="5" start2="11" end2="12" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="6" end1="6" start2="13" end2="20" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="12" end1="12" start2="26" end2="30" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="14" end1="14" start2="32" end2="35" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="18" end1="18" start2="39" end2="40" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="19" end1="19" start2="41" end2="43" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="20" end1="20" start2="44" end2="45" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="27" end1="27" start2="52" end2="55" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="29" end1="29" start2="57" end2="59" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="32" end1="32" start2="62" end2="63" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="36" end1="36" start2="67" end2="72" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="38" end1="39" start2="74" end2="75" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="45" end1="45" start2="81" end2="86" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
</ranges>
|
|
||||||
</file>
|
|
||||||
<file path="$PROJECT_DIR$/src/server/ThreadServer.java">
|
|
||||||
<ranges>
|
|
||||||
<range start1="0" end1="0" start2="0" end2="6" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="12" end1="12" start2="18" end2="26" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="15" end1="15" start2="29" end2="32" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="16" end1="16" start2="33" end2="37" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="17" end1="17" start2="38" end2="42" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="18" end1="18" start2="43" end2="47" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="19" end1="19" start2="48" end2="53" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="20" end1="21" start2="54" end2="58" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="23" end1="23" start2="60" end2="67" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="32" end1="32" start2="76" end2="84" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="72" end1="72" start2="124" end2="130" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="80" end1="80" start2="138" end2="146" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="85" end1="85" start2="151" end2="158" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="88" end1="90" start2="161" end2="166" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
<range start1="92" end1="92" start2="168" end2="175" changelist="ecb4d6c3-70b5-4e80-ba94-fcec6f42612f" />
|
|
||||||
<range start1="96" end1="98" start2="179" end2="184" changelist="79e91d13-7d5f-4b9a-954b-9bc7cde074fc" />
|
|
||||||
</ranges>
|
|
||||||
</file>
|
|
||||||
</component>
|
|
||||||
<component name="MarkdownSettingsMigration">
|
<component name="MarkdownSettingsMigration">
|
||||||
<option name="stateVersion" value="1" />
|
<option name="stateVersion" value="1" />
|
||||||
</component>
|
</component>
|
||||||
@@ -152,6 +52,7 @@
|
|||||||
"com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrarySuperClass.JUnit5": "",
|
"com.intellij.testIntegration.createTest.CreateTestDialog.defaultLibrarySuperClass.JUnit5": "",
|
||||||
"create.test.in.the.same.root": "true",
|
"create.test.in.the.same.root": "true",
|
||||||
"last_opened_file_path": "/Users/lucas/Documents/GitHub/projet-mini-chat/src/serveur",
|
"last_opened_file_path": "/Users/lucas/Documents/GitHub/projet-mini-chat/src/serveur",
|
||||||
|
"nodejs_package_manager_path": "npm",
|
||||||
"project.structure.last.edited": "Modules",
|
"project.structure.last.edited": "Modules",
|
||||||
"project.structure.proportion": "0.15",
|
"project.structure.proportion": "0.15",
|
||||||
"project.structure.side.proportion": "0.2",
|
"project.structure.side.proportion": "0.2",
|
||||||
@@ -173,33 +74,7 @@
|
|||||||
<recent name="utils" />
|
<recent name="utils" />
|
||||||
</key>
|
</key>
|
||||||
</component>
|
</component>
|
||||||
<component name="RunManager" selected="Application.Server">
|
<component name="RunManager" selected="Application.ui.FenetreClient">
|
||||||
<configuration name="App" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="ui.App" />
|
|
||||||
<module name="projet-mini-chat" />
|
|
||||||
<extension name="coverage">
|
|
||||||
<pattern>
|
|
||||||
<option name="PATTERN" value="ui.*" />
|
|
||||||
<option name="ENABLED" value="true" />
|
|
||||||
</pattern>
|
|
||||||
</extension>
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
<configuration name="Client" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="client.Client" />
|
|
||||||
<module name="projet-mini-chat" />
|
|
||||||
<extension name="coverage">
|
|
||||||
<pattern>
|
|
||||||
<option name="PATTERN" value="client.*" />
|
|
||||||
<option name="ENABLED" value="true" />
|
|
||||||
</pattern>
|
|
||||||
</extension>
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
<configuration name="FenetreServeur" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
<configuration name="FenetreServeur" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
||||||
<option name="MAIN_CLASS_NAME" value="ui.FenetreServeur" />
|
<option name="MAIN_CLASS_NAME" value="ui.FenetreServeur" />
|
||||||
<module name="projet-mini-chat" />
|
<module name="projet-mini-chat" />
|
||||||
@@ -213,19 +88,6 @@
|
|||||||
<option name="Make" enabled="true" />
|
<option name="Make" enabled="true" />
|
||||||
</method>
|
</method>
|
||||||
</configuration>
|
</configuration>
|
||||||
<configuration name="Server" type="Application" factoryName="Application" temporary="true" nameIsGenerated="true">
|
|
||||||
<option name="MAIN_CLASS_NAME" value="server.Server" />
|
|
||||||
<module name="projet-mini-chat" />
|
|
||||||
<extension name="coverage">
|
|
||||||
<pattern>
|
|
||||||
<option name="PATTERN" value="server.*" />
|
|
||||||
<option name="ENABLED" value="true" />
|
|
||||||
</pattern>
|
|
||||||
</extension>
|
|
||||||
<method v="2">
|
|
||||||
<option name="Make" enabled="true" />
|
|
||||||
</method>
|
|
||||||
</configuration>
|
|
||||||
<configuration name="ui.FenetreClient (1)" type="Application" factoryName="Application" nameIsGenerated="true">
|
<configuration name="ui.FenetreClient (1)" type="Application" factoryName="Application" nameIsGenerated="true">
|
||||||
<option name="MAIN_CLASS_NAME" value="ui.FenetreClient" />
|
<option name="MAIN_CLASS_NAME" value="ui.FenetreClient" />
|
||||||
<module name="projet-mini-chat" />
|
<module name="projet-mini-chat" />
|
||||||
@@ -254,19 +116,13 @@
|
|||||||
</configuration>
|
</configuration>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Application.ui.FenetreClient (1)" />
|
<item itemvalue="Application.ui.FenetreClient (1)" />
|
||||||
<item itemvalue="Application.App" />
|
|
||||||
<item itemvalue="Application.Client" />
|
|
||||||
<item itemvalue="Application.FenetreServeur" />
|
<item itemvalue="Application.FenetreServeur" />
|
||||||
<item itemvalue="Application.ui.FenetreClient" />
|
<item itemvalue="Application.ui.FenetreClient" />
|
||||||
<item itemvalue="Application.Server" />
|
|
||||||
</list>
|
</list>
|
||||||
<recent_temporary>
|
<recent_temporary>
|
||||||
<list>
|
<list>
|
||||||
<item itemvalue="Application.Server" />
|
|
||||||
<item itemvalue="Application.App" />
|
|
||||||
<item itemvalue="Application.FenetreServeur" />
|
|
||||||
<item itemvalue="Application.ui.FenetreClient" />
|
<item itemvalue="Application.ui.FenetreClient" />
|
||||||
<item itemvalue="Application.Client" />
|
<item itemvalue="Application.FenetreServeur" />
|
||||||
</list>
|
</list>
|
||||||
</recent_temporary>
|
</recent_temporary>
|
||||||
</component>
|
</component>
|
||||||
@@ -282,7 +138,8 @@
|
|||||||
<workItem from="1669119772164" duration="6834000" />
|
<workItem from="1669119772164" duration="6834000" />
|
||||||
<workItem from="1669724625302" duration="6630000" />
|
<workItem from="1669724625302" duration="6630000" />
|
||||||
<workItem from="1670230395395" duration="19588000" />
|
<workItem from="1670230395395" duration="19588000" />
|
||||||
<workItem from="1670329829454" duration="6293000" />
|
<workItem from="1670329829454" duration="6520000" />
|
||||||
|
<workItem from="1670405222370" duration="1434000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
@@ -1,16 +1,22 @@
|
|||||||
# Question 6
|
<h1 align="center">Projet Mini Chat</h1>
|
||||||
|
<p>
|
||||||
|
<img alt="Version" src="https://img.shields.io/badge/version-1.0-blue.svg?cacheSeconds=2592000" />
|
||||||
|
</p>
|
||||||
|
|
||||||
## Avant la communication
|
> Projet de réseau, semestre 5 Licence Informatique 2022-2023 à l'INU Champollion.
|
||||||
Utiliser le RSA, avant toute communication.
|
|
||||||
Le client et le server génèrent 2 clés (une publique et une privées)
|
|
||||||
Ils s'échangent leurs clé publiques.
|
|
||||||
|
|
||||||

|
## Auteurs
|
||||||
|
|
||||||
## Pendant la communication
|
👤 **Gaël BURGUÈS**
|
||||||
Lors qu'un utilisateur veut envoyer un message, il crypte son
|
|
||||||
message avec la clé pulique de son interlocuteur et lui envoie.
|
|
||||||
La personne qui reçois le message, le décrypte le message avec
|
|
||||||
sa propre clé privée.
|
|
||||||
|
|
||||||

|
* Github: [@Gagl08](https://github.com/Gagl08)
|
||||||
|
|
||||||
|
👤 **Laurian DUFRECHOU**
|
||||||
|
|
||||||
|
* Github: [@Laurian-Dufrechou](https://github.com/Laurian-Dufrechou)
|
||||||
|
|
||||||
|
👤 **Lucàs VABRE**
|
||||||
|
|
||||||
|
* Github: [@LucasVbr](https://github.com/LucasVbr)
|
||||||
|
|
||||||
|
***
|
||||||
+84
-33
@@ -31,24 +31,64 @@ import java.util.Scanner;
|
|||||||
* @author Lucàs Vabre
|
* @author Lucàs Vabre
|
||||||
*/
|
*/
|
||||||
|
|
||||||
public class Client extends Thread{
|
public class Client extends Thread {
|
||||||
|
|
||||||
//elements d'un client
|
/**
|
||||||
|
* Adresse IP de connexion au serveur
|
||||||
|
*/
|
||||||
private final String SERVER_IP;
|
private final String SERVER_IP;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Port de connexion du serveur
|
||||||
|
*/
|
||||||
private final int SERVER_PORT;
|
private final int SERVER_PORT;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Interface utilisateur
|
||||||
|
*/
|
||||||
private final FenetreClient fenetre;
|
private final FenetreClient fenetre;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Le pseudonyme du client
|
||||||
|
*/
|
||||||
private String pseudo;
|
private String pseudo;
|
||||||
private KeyPair clientKeys;
|
|
||||||
|
/**
|
||||||
|
* Paire de clés de chiffrage du client
|
||||||
|
*/
|
||||||
|
private final KeyPair clientKeys;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Clé publique du serveur
|
||||||
|
*/
|
||||||
private PublicKey serverKey;
|
private PublicKey serverKey;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flux d'entrée pour la version console
|
||||||
|
*/
|
||||||
private final Scanner scanner;
|
private final Scanner scanner;
|
||||||
|
|
||||||
// Sockets de connexion
|
/**
|
||||||
|
* Flux d'entrée du socket
|
||||||
|
*/
|
||||||
private ObjectInputStream inputStream;
|
private ObjectInputStream inputStream;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Flux de sortie du socket
|
||||||
|
*/
|
||||||
private ObjectOutputStream outputStream;
|
private ObjectOutputStream outputStream;
|
||||||
|
|
||||||
private ArrayList<String> fileAttenteMessage;
|
/**
|
||||||
|
* File d'attente des messages à envoyer
|
||||||
|
*/
|
||||||
|
private final ArrayList<String> fileAttenteMessage;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Crée un nouveau client qui se connecte à un serveur
|
||||||
|
*
|
||||||
|
* @param ip Adresse du serveur (IP ou URI)
|
||||||
|
* @param port Port de connexion
|
||||||
|
*/
|
||||||
public Client(String ip, int port) {
|
public Client(String ip, int port) {
|
||||||
this.SERVER_IP = ResolutionDeNom.getIPAddress(ip);
|
this.SERVER_IP = ResolutionDeNom.getIPAddress(ip);
|
||||||
this.SERVER_PORT = port;
|
this.SERVER_PORT = port;
|
||||||
@@ -62,10 +102,11 @@ public class Client extends Thread{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ancien object client sans fenetre
|
* Crée un nouveau client qui se connecte à un serveur avec un pseudo
|
||||||
* @param ip adresse ip du client
|
*
|
||||||
* @param port numeros de port du client
|
* @param ip Adresse du serveur (IP ou URI)
|
||||||
* @param pseudo pseudo du client
|
* @param port Port de connexion
|
||||||
|
* @param pseudo Le pseudo du client
|
||||||
*/
|
*/
|
||||||
public Client(String ip, int port, String pseudo) {
|
public Client(String ip, int port, String pseudo) {
|
||||||
this.SERVER_IP = ResolutionDeNom.getIPAddress(ip);
|
this.SERVER_IP = ResolutionDeNom.getIPAddress(ip);
|
||||||
@@ -80,11 +121,12 @@ public class Client extends Thread{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Object client actuel
|
* Crée un nouveau client lié à une interface utilisateur
|
||||||
* @param ip adresse ip du client
|
*
|
||||||
* @param port numeros de port du client
|
* @param ip Adresse du serveur (IP ou URI)
|
||||||
* @param pseudo nom du client
|
* @param port Port de connexion au serveur
|
||||||
* @param fenetre fenetreClient assicié au client
|
* @param pseudo Pseudonyme du client
|
||||||
|
* @param fenetre Interface du client
|
||||||
*/
|
*/
|
||||||
public Client(String ip, int port, String pseudo, FenetreClient fenetre) {
|
public Client(String ip, int port, String pseudo, FenetreClient fenetre) {
|
||||||
this.SERVER_IP = ResolutionDeNom.getIPAddress(ip);
|
this.SERVER_IP = ResolutionDeNom.getIPAddress(ip);
|
||||||
@@ -100,26 +142,30 @@ public class Client extends Thread{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
// Demande la saisie du pseudo s'il n'est pas défini
|
||||||
if (pseudo == null) {
|
if (pseudo == null) {
|
||||||
System.out.print("Pseudo: ");
|
System.out.print("Pseudo: ");
|
||||||
pseudo = scanner.nextLine();
|
pseudo = scanner.nextLine();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Connexion au socket
|
||||||
try (Socket socket = new Socket(SERVER_IP, SERVER_PORT)) {
|
try (Socket socket = new Socket(SERVER_IP, SERVER_PORT)) {
|
||||||
inputStream = new ObjectInputStream(socket.getInputStream());
|
inputStream = new ObjectInputStream(socket.getInputStream());
|
||||||
outputStream = new ObjectOutputStream(socket.getOutputStream());
|
outputStream = new ObjectOutputStream(socket.getOutputStream());
|
||||||
|
|
||||||
|
// Initialisation : envoi des clés et du pseudo
|
||||||
exchangeKeys();
|
exchangeKeys();
|
||||||
sendMessage(pseudo);
|
sendMessage(pseudo);
|
||||||
|
|
||||||
// Ecoute du serveur
|
// Écoute du serveur
|
||||||
ListenThread threadClient = new ListenThread(this, fenetre);
|
ListenThread threadClient = new ListenThread(this, fenetre);
|
||||||
threadClient.start();
|
threadClient.start();
|
||||||
|
|
||||||
// Ecoute de l'entrée du clavier
|
// Écoute de l'entrée du clavier
|
||||||
System.out.println("Tapez 'bye' pour quitter\n");
|
System.out.println("Tapez 'bye' pour quitter\n");
|
||||||
String message = "";
|
String message = "";
|
||||||
do {
|
do {
|
||||||
|
// S'il y a un message dans la file d'attente, on l'envoie
|
||||||
if (fileAttenteMessage.size() > 0) {
|
if (fileAttenteMessage.size() > 0) {
|
||||||
message = fileAttenteMessage.remove(0);
|
message = fileAttenteMessage.remove(0);
|
||||||
sendMessage(message);
|
sendMessage(message);
|
||||||
@@ -127,14 +173,15 @@ public class Client extends Thread{
|
|||||||
} while (!Objects.equals(message, "bye"));
|
} while (!Objects.equals(message, "bye"));
|
||||||
|
|
||||||
} catch (ConnectException e) {
|
} catch (ConnectException e) {
|
||||||
System.err.println("Serveur non trouvé"); // TODO throw error
|
System.err.println("Serveur non trouvé");
|
||||||
if (fenetre != null) {
|
|
||||||
|
if (fenetre != null) { // Affiche l'erreur sur l'interface utilisateur
|
||||||
new FenetreErreur("Serveur non trouvé", fenetre);
|
new FenetreErreur("Serveur non trouvé", fenetre);
|
||||||
fenetre.deconnexion();
|
fenetre.deconnexion();
|
||||||
}
|
}
|
||||||
} catch (EOFException e) {
|
} catch (EOFException e) {
|
||||||
System.err.println("Connexion perdue"); // TODO throw error
|
System.err.println("Connexion perdue");
|
||||||
if (fenetre != null) {
|
if (fenetre != null) { // Affiche l'erreur sur l'interface utilisateur
|
||||||
new FenetreErreur("Connexion perdue", fenetre);
|
new FenetreErreur("Connexion perdue", fenetre);
|
||||||
fenetre.deconnexion();
|
fenetre.deconnexion();
|
||||||
}
|
}
|
||||||
@@ -144,11 +191,12 @@ public class Client extends Thread{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* envoie la clef client au serveur
|
* Échange les clés publiques du client et du serveur
|
||||||
* @throws IOException
|
*
|
||||||
* @throws ClassNotFoundException
|
* @throws IOException Erreur de connexion
|
||||||
|
* @throws ClassNotFoundException L'objet reçu n'a pas pu être cast en PublicKey
|
||||||
*/
|
*/
|
||||||
public void exchangeKeys() throws IOException, ClassNotFoundException {
|
private void exchangeKeys() throws IOException, ClassNotFoundException {
|
||||||
// Envoie sa clé
|
// Envoie sa clé
|
||||||
outputStream.writeObject(clientKeys.getPublic());
|
outputStream.writeObject(clientKeys.getPublic());
|
||||||
|
|
||||||
@@ -157,9 +205,10 @@ public class Client extends Thread{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* envoie un message dans la socket
|
* Envoie un message au serveur
|
||||||
* @param message message a envoyer au serveur
|
*
|
||||||
* @throws IOException
|
* @param message Le message à envoyer
|
||||||
|
* @throws IOException Erreur de connexion au socket
|
||||||
*/
|
*/
|
||||||
public void sendMessage(String message) throws IOException {
|
public void sendMessage(String message) throws IOException {
|
||||||
byte[] messageCrypte = RSA.encrypter(message, serverKey);
|
byte[] messageCrypte = RSA.encrypter(message, serverKey);
|
||||||
@@ -167,10 +216,11 @@ public class Client extends Thread{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Recupere un message evoye par le serveur
|
* Récupère un message du serveur
|
||||||
* @return
|
*
|
||||||
* @throws IOException
|
* @return Le message reçu
|
||||||
* @throws ClassNotFoundException
|
* @throws IOException Erreur de connexion au serveur
|
||||||
|
* @throws ClassNotFoundException L'objet reçu n'a pas pu être cast en byte[]
|
||||||
*/
|
*/
|
||||||
public String getMessage() throws IOException, ClassNotFoundException {
|
public String getMessage() throws IOException, ClassNotFoundException {
|
||||||
byte[] messageCrypte = (byte[]) inputStream.readObject();
|
byte[] messageCrypte = (byte[]) inputStream.readObject();
|
||||||
@@ -178,8 +228,9 @@ public class Client extends Thread{
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Ajoute un message à la file d'attente
|
* Ajoute un message dans la file d'attente des messages à envoyer
|
||||||
* @param message messsage a ajouter a la file
|
*
|
||||||
|
* @param message Le message à envoyer
|
||||||
*/
|
*/
|
||||||
public void addMessage(String message) {
|
public void addMessage(String message) {
|
||||||
this.fileAttenteMessage.add(message);
|
this.fileAttenteMessage.add(message);
|
||||||
|
|||||||
@@ -22,10 +22,14 @@ import java.net.SocketException;
|
|||||||
*/
|
*/
|
||||||
public class ListenThread extends Thread {
|
public class ListenThread extends Thread {
|
||||||
|
|
||||||
/** Instance du client */
|
/**
|
||||||
|
* Instance du client
|
||||||
|
*/
|
||||||
private final Client client;
|
private final Client client;
|
||||||
|
|
||||||
/** Interface utilisateur du client */
|
/**
|
||||||
|
* Interface utilisateur du client
|
||||||
|
*/
|
||||||
private final FenetreClient fenetre;
|
private final FenetreClient fenetre;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,10 +43,10 @@ public class ListenThread extends Thread {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Object d'ecoute avec fenetre
|
* Crée un nouveau thread lorsque le client utilise une interface utilisateur
|
||||||
*
|
*
|
||||||
* @param client client associe à l'ecoute
|
* @param client client associe à l'écoute
|
||||||
* @param fenetre fenetreClient associe à l'ecoute
|
* @param fenetre Interface utilisateur du client
|
||||||
*/
|
*/
|
||||||
public ListenThread(Client client, FenetreClient fenetre) {
|
public ListenThread(Client client, FenetreClient fenetre) {
|
||||||
this.client = client;
|
this.client = client;
|
||||||
@@ -56,16 +60,16 @@ public class ListenThread extends Thread {
|
|||||||
String message;
|
String message;
|
||||||
while (true) {
|
while (true) {
|
||||||
message = client.getMessage();
|
message = client.getMessage();
|
||||||
|
|
||||||
|
// Log
|
||||||
System.out.println(message);
|
System.out.println(message);
|
||||||
if (fenetre != null) {
|
if (fenetre != null) fenetre.displayNewMessage(message);
|
||||||
fenetre.displayNewMessage(message);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} catch (SocketException ignored) {
|
} catch (SocketException ignored) { // Le socket client est fermé
|
||||||
System.out.println("Vous avez quitté le salon");
|
System.out.println("Vous avez quitté le salon");
|
||||||
} catch (EOFException ignored) {
|
} catch (EOFException ignored) { // Fermeture coté serveur
|
||||||
System.err.println("Connexion perdue");
|
System.err.println("Connexion perdue");
|
||||||
if (fenetre != null) {
|
if (fenetre != null) { // Affiche une erreur sur l'interface utilisateur
|
||||||
new FenetreErreur("Connexion perdue", fenetre);
|
new FenetreErreur("Connexion perdue", fenetre);
|
||||||
fenetre.deconnexion();
|
fenetre.deconnexion();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,6 +51,7 @@ public class FenetreClient extends JFrame {
|
|||||||
// Au lancement, on ne peut pas envoyer de message sans être connecté au serveur
|
// Au lancement, on ne peut pas envoyer de message sans être connecté au serveur
|
||||||
messageInput.setEnabled(false);
|
messageInput.setEnabled(false);
|
||||||
envoyerButton.setEnabled(false);
|
envoyerButton.setEnabled(false);
|
||||||
|
deconnexionButton.setEnabled(false);
|
||||||
|
|
||||||
// Action des boutons
|
// Action des boutons
|
||||||
messageInput.addKeyListener(new KeyAdapter() {
|
messageInput.addKeyListener(new KeyAdapter() {
|
||||||
@@ -114,10 +115,12 @@ public class FenetreClient extends JFrame {
|
|||||||
addressInput.setEnabled(false);
|
addressInput.setEnabled(false);
|
||||||
portInput.setEnabled(false);
|
portInput.setEnabled(false);
|
||||||
pseudoInput.setEnabled(false);
|
pseudoInput.setEnabled(false);
|
||||||
|
connexionButton.setEnabled(false);
|
||||||
|
|
||||||
// Active l'interface de tchat
|
// Active l'interface de tchat
|
||||||
messageInput.setEnabled(true);
|
messageInput.setEnabled(true);
|
||||||
envoyerButton.setEnabled(true);
|
envoyerButton.setEnabled(true);
|
||||||
|
deconnexionButton.setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -137,10 +140,12 @@ public class FenetreClient extends JFrame {
|
|||||||
addressInput.setEnabled(true);
|
addressInput.setEnabled(true);
|
||||||
portInput.setEnabled(true);
|
portInput.setEnabled(true);
|
||||||
pseudoInput.setEnabled(true);
|
pseudoInput.setEnabled(true);
|
||||||
|
connexionButton.setEnabled(true);
|
||||||
|
|
||||||
// Désactive l'interface de tchat
|
// Désactive l'interface de tchat
|
||||||
messageInput.setEnabled(false);
|
messageInput.setEnabled(false);
|
||||||
envoyerButton.setEnabled(false);
|
envoyerButton.setEnabled(false);
|
||||||
|
deconnexionButton.setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user