44import java .io .IOException ;
55import java .io .ObjectInputStream ;
66import java .io .ObjectOutputStream ;
7- import java .io .StreamCorruptedException ;
87import java .net .Socket ;
98import java .net .SocketException ;
109import java .util .Vector ;
@@ -52,17 +51,17 @@ public GameServer(Socket socket, LobbyInterface lobby) {
5251 out = new ObjectOutputStream (socket .getOutputStream ());
5352 } catch (IOException e ) {
5453 //e.printStackTrace();
55- System .out .println ("--" );
54+ System .out .println ("-- [" + name + "] " );
5655 lobby .subSocket (name );
57- return ;
58- } finally {
56+
5957 if ( this .socket != null ) {
6058 try {
6159 this .socket .close ();
62- } catch (IOException e ) {
63- e .printStackTrace ();
60+ } catch (IOException e1 ) {
61+ e1 .printStackTrace ();
6462 }
6563 }
64+ return ;
6665 }
6766
6867 this .start ();
@@ -97,15 +96,7 @@ public void run() {
9796 e .printStackTrace ();
9897 break ;
9998
100- } finally {
101- if ( this .socket != null ) {
102- try {
103- this .socket .close ();
104- } catch (IOException e ) {
105- e .printStackTrace ();
106- }
107- }
108- }
99+ }
109100
110101 if (data instanceof ChatData )
111102 analysisChatData ((ChatData ) data );
@@ -129,11 +120,16 @@ else if (data instanceof GameData)
129120
130121 }
131122
132- protected void sendMessage (Protocol data ) {
123+ protected void sendMessage (Protocol data ) throws Exception {
133124 try {
134125 out .writeObject (data );
126+ } catch ( NullPointerException e ) {
127+ System .out .println ("연결이 끊긴 사용자 입니다." );
128+ throw new Exception ("사용자 연결이 끊겼습니다. NullPointerException!! " );
135129 } catch (IOException e ) {
136130 e .printStackTrace ();
131+ System .out .println ("연결이 끊긴 사용자 입니다." );
132+ throw new Exception ("사용자 연결이 끊겼습니다. " + e );
137133 }
138134 }
139135
@@ -173,7 +169,12 @@ private void analysisChatData(ChatData data) {
173169 break ;
174170
175171 case ChatData .LOGIN_CHECK :
176- sendMessage (data );
172+ try {
173+ sendMessage (data );
174+ } catch (Exception e ) {
175+ // Null 예외처리
176+ e .printStackTrace ();
177+ }
177178
178179 case ChatData .EXIT :
179180 /*
@@ -218,7 +219,11 @@ private void analysisChatData(ChatData data) {
218219 list .add (temp .getUserName ());
219220
220221 data .setUserList (list );
221- sendMessage (data );
222+ try {
223+ sendMessage (data );
224+ } catch (Exception e ) {
225+ e .printStackTrace ();
226+ }
222227
223228 break ;
224229
@@ -291,7 +296,11 @@ private void analysisLobbyData(LobbyData data) {
291296 setRoomInstance (room );
292297
293298 data .setRoomNumber (roomNumber );
294- sendMessage (data );
299+ try {
300+ sendMessage (data );
301+ } catch (Exception e ) {
302+ e .printStackTrace ();
303+ }
295304
296305 break ;
297306
@@ -313,15 +322,22 @@ private void analysisLobbyData(LobbyData data) {
313322 data .setUserList (room .getStringUser ());
314323 data .setRoomNumber (roomNumber );
315324
316- sendMessage (data );
325+ try {
326+ sendMessage (data );
327+ } catch (Exception e ) {
328+ e .printStackTrace ();
329+ }
317330 room .sendTo (ServerInterface .IN_GAME_ROOMKING , data );
318331 sendUserList ();
319332
320333 } else {
321334 room = null ;
322335
323- sendMessage (new ChatData ("알림" , "이방은 들어갈수 없습니다." ,
324- ChatData .MESSAGE ));
336+ try {
337+ sendMessage (new ChatData ("알림" , "이방은 들어갈수 없습니다." , ChatData .MESSAGE ));
338+ } catch (Exception e ) {
339+ e .printStackTrace ();
340+ }
325341 }
326342
327343 break ;
0 commit comments