<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ro">
	<id>http://wiki.dcae.pub.ro/index.php?action=history&amp;feed=atom&amp;title=POO_Lab_Lucrarea_5</id>
	<title>POO Lab Lucrarea 5 - Revizia istoricului</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.dcae.pub.ro/index.php?action=history&amp;feed=atom&amp;title=POO_Lab_Lucrarea_5"/>
	<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;action=history"/>
	<updated>2026-05-28T21:57:57Z</updated>
	<subtitle>Istoricul versiunilor pentru această pagină din wiki</subtitle>
	<generator>MediaWiki 1.35.14</generator>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=4143&amp;oldid=prev</id>
		<title>Ccioflan: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=4143&amp;oldid=prev"/>
		<updated>2015-12-17T14:39:43Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 17 decembrie 2015 14:39&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l28&quot; &gt;Linia 28:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ServerPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (voit sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ServerPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (voit sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;synchronzied&lt;/del&gt;&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;synchronized&lt;/ins&gt;&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Administrați excepțiile astfel încât dacă apare o eroare de conexiune, server-ul să fie robust și să continue să servească corect ceilalți clienți conectați și să poate accepta un client nou în locul clientului pierdut.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Administrați excepțiile astfel încât dacă apare o eroare de conexiune, server-ul să fie robust și să continue să servească corect ceilalți clienți conectați și să poate accepta un client nou în locul clientului pierdut.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Ccioflan</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=4060&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=4060&amp;oldid=prev"/>
		<updated>2015-12-10T15:03:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 10 decembrie 2015 15:03&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l26&quot; &gt;Linia 26:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 26:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void listen()&amp;lt;/code&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void listen()&amp;lt;/code&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;ClientPeer&lt;/del&gt;)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (voit sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ServerPeer&lt;/ins&gt;)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (voit sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;synchronzied&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;synchronzied&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3853&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3853&amp;oldid=prev"/>
		<updated>2015-12-01T13:23:09Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 1 decembrie 2015 13:23&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot; &gt;Linia 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea trimite corect mesajele private, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getUsername()&amp;lt;/code&amp;gt; care să întoarcă numele client-ului conectat la acel ServerPeer. Numele este stocat în clasă într-un câmp privat, care se actualizează la fiecare mesaj primit, extrăgând din mesaj numele expeditorului.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea trimite corect mesajele private, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getUsername()&amp;lt;/code&amp;gt; care să întoarcă numele client-ului conectat la acel ServerPeer. Numele este stocat în clasă într-un câmp privat, care se actualizează la fiecare mesaj primit, extrăgând din mesaj numele expeditorului.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie instanțiabilă. Adăugați un constructor care să ia ca argument port-ul TCP pe care server-ul sa asculte și numărul maxim de clienți posibili.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie instanțiabilă. Adăugați un constructor care să ia ca argument port-ul TCP pe care server-ul sa asculte și numărul maxim de clienți posibili&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;. În acest constructor trebuie instanțiat obiectul de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket&amp;lt;/code&amp;gt;&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void listen()&amp;lt;/code&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void listen()&amp;lt;/code&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3852&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3852&amp;oldid=prev"/>
		<updated>2015-12-01T12:09:26Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 1 decembrie 2015 12:09&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l26&quot; &gt;Linia 26:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 26:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void listen()&amp;lt;/code&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void listen()&amp;lt;/code&amp;gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ClientPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;void &lt;/del&gt;sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ClientPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;voit &lt;/ins&gt;sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;synchronzied&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;synchronzied&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3848&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3848&amp;oldid=prev"/>
		<updated>2015-11-26T13:33:50Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 26 noiembrie 2015 13:33&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l29&quot; &gt;Linia 29:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 29:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;synchronzied&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;synchronzied&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Administrați excepțiile astfel încât dacă apare o eroare de conexiune, server-ul să fie robust și să continue să servească corect ceilalți clienți conectați și să poate accepta un client nou în locul clientului pierdut. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3847&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3847&amp;oldid=prev"/>
		<updated>2015-11-26T13:31:52Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 26 noiembrie 2015 13:31&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l31&quot; &gt;Linia 31:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 31:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; se trimit tuturor clienților conectați. Obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.PrivateMessage&amp;lt;/code&amp;gt; se trimit doar către expeditor și către destinatar.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Clasa &amp;#039;&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&amp;#039; ar trebui să păstreze o listă cu toți clienții conectați (cu obiectele de tip &amp;#039;&amp;#039;&amp;#039;ServerPeer&amp;#039;&amp;#039;&amp;#039;). Pentru acest lucru vă puteți folosi de clasa [http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html java.util.ArrayList].&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Clasa &amp;#039;&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&amp;#039; ar trebui să păstreze o listă cu toți clienții conectați (cu obiectele de tip &amp;#039;&amp;#039;&amp;#039;ServerPeer&amp;#039;&amp;#039;&amp;#039;). Pentru acest lucru vă puteți folosi de clasa [http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html java.util.ArrayList].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Această listă trebuie să fie menținută în sensul că noii clienți trebuie adăugați, iar clienții deconectați trebuie eliminați.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Această listă trebuie să fie menținută în sensul că noii clienți trebuie adăugați, iar clienții deconectați trebuie eliminați.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3846&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3846&amp;oldid=prev"/>
		<updated>2015-11-26T13:26:38Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 26 noiembrie 2015 13:26&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l33&quot; &gt;Linia 33:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 33:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Clasa &amp;#039;&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&amp;#039; ar trebui să păstreze o listă cu toți clienții conectați (cu obiectele de tip &amp;#039;&amp;#039;&amp;#039;ServerPeer&amp;#039;&amp;#039;&amp;#039;). Pentru acest lucru vă puteți folosi de clasa [http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html java.util.ArrayList].&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Clasa &amp;#039;&amp;#039;&amp;#039;Server&amp;#039;&amp;#039;&amp;#039; ar trebui să păstreze o listă cu toți clienții conectați (cu obiectele de tip &amp;#039;&amp;#039;&amp;#039;ServerPeer&amp;#039;&amp;#039;&amp;#039;). Pentru acest lucru vă puteți folosi de clasa [http://docs.oracle.com/javase/8/docs/api/java/util/ArrayList.html java.util.ArrayList].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Această listă trebuie să fie menținută în sensul că noii clienți trebuie adăugați, iar clienții deconectați trebuie eliminați.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Această listă trebuie să fie menținută în sensul că noii clienți trebuie adăugați, iar clienții deconectați trebuie eliminați.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;* Această listă ar trebui să fie accesibilă firelor de execuție de tip &amp;#039;&amp;#039;&amp;#039;ServerPeer&amp;#039;&amp;#039;&amp;#039; prin metode sincronizate.&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Pentru a verifica dacă un obiect e instanță a unei clase anume, puteți folosi operatorul &amp;#039;&amp;#039;&amp;#039;instanceof&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* Pentru a verifica dacă un obiect e instanță a unei clase anume, puteți folosi operatorul &amp;#039;&amp;#039;&amp;#039;instanceof&amp;#039;&amp;#039;&amp;#039;:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;syntaxhighlight lang=&amp;quot;java&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3845&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3845&amp;oldid=prev"/>
		<updated>2015-11-26T13:26:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 26 noiembrie 2015 13:26&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l18&quot; &gt;Linia 18:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 18:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.client.ClientPeer&amp;lt;/code&amp;gt; scrisă la tema anterioară, transformând-o într-un fir de execuție care în paralel cu firul principal de execuție, să citească obiecte de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; dinspre server și să le afișeze pe ecran. Acest thread, odată instanțiat, trebuie pornit de către clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.client.TextClient&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.client.ClientPeer&amp;lt;/code&amp;gt; scrisă la tema anterioară, transformând-o într-un fir de execuție care în paralel cu firul principal de execuție, să citească obiecte de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; dinspre server și să le afișeze pe ecran. Acest thread, odată instanțiat, trebuie pornit de către clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.client.TextClient&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; scrisă la tema anterioară, transformând-o într-un fir de execuție. Acest fir nou de execuție trebuie să citească obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.PrivateMessage&amp;lt;/code&amp;gt; de la clientul asociat și să le distribuie corect la ceilalți clienți.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; scrisă la tema anterioară, transformând-o într-un fir de execuție. Acest fir nou de execuție trebuie să citească obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.PrivateMessage&amp;lt;/code&amp;gt; de la clientul asociat și să le distribuie corect la ceilalți clienți.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Adăugați clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; o metodă getter publică pentru expeditor, numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getSender()&amp;lt;/code&amp;gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea retransmite mesajele celorlalți clienți, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void sendMessage(Message)&amp;lt;/code&amp;gt; care să serializeze obiectul primit ca argument către clientul conectat.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea retransmite mesajele celorlalți clienți, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void sendMessage(Message)&amp;lt;/code&amp;gt; care să serializeze obiectul primit ca argument către clientul conectat.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Adăugați clasei &lt;/del&gt;&amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;structs&lt;/del&gt;.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;Message&lt;/del&gt;&amp;lt;/code&amp;gt; o &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;metodă getter publică pentru expeditor&lt;/del&gt;, &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;numită &lt;/del&gt;&amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;String getSender&lt;/del&gt;()&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Pentru a putea folosi clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; să trimită mesajele clienților conectați, clasa &lt;/ins&gt;&amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;server&lt;/ins&gt;.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;ServerPeer&lt;/ins&gt;&amp;lt;/code&amp;gt; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;trebuie să aibă &lt;/ins&gt;o &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;referință la clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt;. Astfel&lt;/ins&gt;, &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;modificați constructorul clasei &lt;/ins&gt;&amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; astfel încât să aibă semnătura &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerPeer&lt;/ins&gt;(&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;Server, Socket&lt;/ins&gt;)&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea trimite corect mesajele private, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getUsername()&amp;lt;/code&amp;gt; care să întoarcă numele client-ului conectat la acel ServerPeer. Numele este stocat în clasă într-un câmp privat, care se actualizează la fiecare mesaj primit, extrăgând din mesaj numele expeditorului.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea trimite corect mesajele private, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getUsername()&amp;lt;/code&amp;gt; care să întoarcă numele client-ului conectat la acel ServerPeer. Numele este stocat în clasă într-un câmp privat, care se actualizează la fiecare mesaj primit, extrăgând din mesaj numele expeditorului.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l27&quot; &gt;Linia 27:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 28:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ClientPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (void sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ClientPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (void sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;# Atenție care metode trebuie să fie sincronizate (pentru a trece testele, nu folosiți blocuri &amp;lt;code&amp;gt;synchronzied&amp;lt;/code&amp;gt;, ci declarați toată metoda sincronizată).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note:&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Note:&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3844&amp;oldid=prev</id>
		<title>Rhobincu la 26 noiembrie 2015 13:21</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3844&amp;oldid=prev"/>
		<updated>2015-11-26T13:21:55Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 26 noiembrie 2015 13:21&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l23&quot; &gt;Linia 23:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 23:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie instanțiabilă. Adăugați un constructor care să ia ca argument port-ul TCP pe care server-ul sa asculte și numărul maxim de clienți posibili.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie instanțiabilă. Adăugați un constructor care să ia ca argument port-ul TCP pe care server-ul sa asculte și numărul maxim de clienți posibili.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; &lt;del class=&quot;diffchange diffchange-inline&quot;&gt; &lt;/del&gt;&amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#039;&amp;#039;&amp;#039;&lt;/del&gt;listen&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;&amp;#039;&amp;#039;&amp;#039;&lt;/del&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039; &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;din &lt;/ins&gt;&amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;&amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void &lt;/ins&gt;listen&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;()&amp;lt;/code&amp;gt;&lt;/ins&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ClientPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (void sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ClientPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (void sau datorită unei erori), pentru a fi elimiat din listă.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
	<entry>
		<id>http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3843&amp;oldid=prev</id>
		<title>Rhobincu: /* Cerințe */</title>
		<link rel="alternate" type="text/html" href="http://wiki.dcae.pub.ro/index.php?title=POO_Lab_Lucrarea_5&amp;diff=3843&amp;oldid=prev"/>
		<updated>2015-11-26T13:17:23Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;Cerințe&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left diff-editfont-monospace&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ro&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Versiunea anterioară&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Versiunea de la data 26 noiembrie 2015 13:17&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l21&quot; &gt;Linia 21:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Linia 21:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Adăugați clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; o metodă getter publică pentru expeditor, numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getSender()&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Adăugați clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.structs.Message&amp;lt;/code&amp;gt; o metodă getter publică pentru expeditor, numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getSender()&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea trimite corect mesajele private, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getUsername()&amp;lt;/code&amp;gt; care să întoarcă numele client-ului conectat la acel ServerPeer. Numele este stocat în clasă într-un câmp privat, care se actualizează la fiecare mesaj primit, extrăgând din mesaj numele expeditorului.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Pentru a putea trimite corect mesajele private, clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; trebuie să aibă o metodă publică numită &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;String getUsername()&amp;lt;/code&amp;gt; care să întoarcă numele client-ului conectat la acel ServerPeer. Numele este stocat în clasă într-un câmp privat, care se actualizează la fiecare mesaj primit, extrăgând din mesaj numele expeditorului.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt;−&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.&lt;del class=&quot;diffchange diffchange-inline&quot;&gt;client&lt;/del&gt;.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Modificați clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; scrisă la tema anterioară, astfel încât la conectarea unui client, aceasta să creeze un nou &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;server&lt;/ins&gt;.ServerPeer&amp;lt;/code&amp;gt; pe care să-l pornească ca Thread, apoi să revină în metoda &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;ServerSocket.accept()&amp;lt;/code&amp;gt;, așteptând o nouă conexiune&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie instanțiabilă. Adăugați un constructor care să ia ca argument port-ul TCP pe care server-ul sa asculte și numărul maxim de clienți posibili.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;# Bucla cu apelul metodei &amp;#039;&amp;#039;&amp;#039;accept&amp;#039;&amp;#039;&amp;#039;  &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie acum să fie mutată într-o metodă separată a clasei &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; numită &amp;#039;&amp;#039;&amp;#039;listen&amp;#039;&amp;#039;&amp;#039;. &lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;# În metoda &amp;#039;&amp;#039;&amp;#039;main&amp;#039;&amp;#039;&amp;#039; din &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să rămână o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;, o instanțiere de obiect &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; și un apel de metodă &amp;#039;&amp;#039;&amp;#039;listen()&amp;#039;&amp;#039;&amp;#039;, cu blocurile &amp;#039;&amp;#039;&amp;#039;try-catch&amp;#039;&amp;#039;&amp;#039; necesare.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt; &lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt;+&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins class=&quot;diffchange diffchange-inline&quot;&gt;# Clasa &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.Server&amp;lt;/code&amp;gt; trebuie să mai conțină două metode, &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void dispatch(Message)&amp;lt;/code&amp;gt; și &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;void removeClient(ClientPeer)&amp;lt;/code&amp;gt;. Prima este apelată de către obiectele de tip &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.ServerPeer&amp;lt;/code&amp;gt; cu mesajele primite de la clienți, și are rolul de a le trimite mai departe, către ceilalți clienți. A doua metodă este apelată când un client de deconectează (void sau datorită unei erori), pentru a fi elimiat din listă&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;# Server-ul nu trebuie să accepte o conexiune dacă numărul de clienți conectați este deja egal cu proprietatea MAX_CLIENTS citită din fișierul &amp;#039;&amp;#039;server.conf&amp;#039;&amp;#039; de către &amp;lt;code style=&amp;quot;color: green&amp;quot;&amp;gt;seriaf.poo.server.config.ServerConfig&amp;lt;/code&amp;gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;td class=&#039;diff-marker&#039;&gt; &lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Rhobincu</name></author>
	</entry>
</feed>