less..
서버프로그램( Server_Main.java )
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Server_Main extends Thread
{
private static final int PORTNUM = 1111;
private static final int WAITFORCLIENT = 0;
private static final int WAITFORANSWER = 1;
private static final int WAITFORCONFIRM = 2;
private static int nState = 0;
private ServerSocket SSocket;
public Server_Main()
{
try
{
SSocket = new ServerSocket( PORTNUM );
}
catch (IOException e)
{
System.out.println( "Server Socket IOException." );
System.out.println( "Server Program Exit." );
e.printStackTrace();
System.exit( 0 );
}
}
public void run()
{
String outLine;
String inLine;
Socket CSocket = null;
InputStreamReader isr;
BufferedReader br;
PrintWriter wr;
System.out.println( "Server Starting.." );
while( true )
{
if( SSocket == null )
return;
try
{
CSocket = SSocket.accept();
}
catch (IOException e)
{
System.out.println( "Exception: Couldn't connect to client socket." );
e.printStackTrace();
}
try
{
isr = new InputStreamReader( CSocket.getInputStream() );
br = new BufferedReader( isr );
wr = new PrintWriter( new BufferedOutputStream( CSocket.getOutputStream() ), false );
outLine = ProcessInstr( null );
wr.println( outLine );
wr.flush();
while( true )
{
inLine = br.readLine();
if( inLine.length() > 0 )
{
System.out.println( inLine + " : 입력되었습니다.");
outLine = ProcessInstr( inLine );
wr.println( outLine );
wr.flush();
if( outLine.equals( "Bye." ) )
break;
}
}
wr.close();
br.close();
isr.close();
CSocket.close();
}
catch( Exception e )
{
System.err.println( "Error: " + e );
e.printStackTrace();
}
}
}
public String ProcessInstr( String inStr )
{
String resStr = null;
switch( nState )
{
case WAITFORCLIENT:
System.out.println( "WAITFORCLIENT" );
resStr = "Quustion?";
nState = WAITFORANSWER;
break;
case WAITFORANSWER:
System.out.println( "WAITFORANSWER" );
resStr = "Answer :" + inStr;
nState = WAITFORCONFIRM;
break;
case WAITFORCONFIRM:
System.out.println( "WAITFORCONFIRM" );
resStr = "?";
if( inStr.equalsIgnoreCase( "Y" ) )
{
resStr = "Quustion?" + inStr;
nState = WAITFORANSWER;
}
else
{
resStr = "Bye.";
nState = WAITFORCLIENT;
}
break;
}
return resStr;
}
public static void main( String[] argv )
{
Server_Main Server = new Server_Main();
Server.start();
}
}
클라이언트 프로그램( Client_Main.java )
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import java.net.UnknownHostException;
import java.io.PrintWriter;
public class Client_Main
{
public static void main( String[] argv )
{
Socket toServerSocket = null;
InputStreamReader isr;
BufferedReader br;
PrintWriter wr;
StringBuffer str = new StringBuffer(128);
String inStr;
int c;
System.out.println( "Client Starting.." );
if( argv.length == 0 )
{
System.out.println( "Usage Server <IP>" );
System.exit( 0 );
}
try
{
toServerSocket = new Socket( argv[0], 1111 );
isr = new InputStreamReader( toServerSocket.getInputStream() );
br = new BufferedReader( isr );
wr = new PrintWriter( toServerSocket.getOutputStream(), true );
while( ( inStr = br.readLine() )!= null )
{
System.out.println( "Server: " + inStr.toString() );
if( inStr.equals( "Bye." ) )
{
break;
}
while( ( c = System.in.read() ) != '\n' )
{
str.append( (char) c );
}
System.out.println( "Client: " + str );
wr.println( str.toString() );
wr.flush();
str.setLength( 0 );
}
wr.close();
br.close();
isr.close();
}
catch (UnknownHostException e)
{
System.out.println( "Host Unknown." );
e.printStackTrace();
System.exit( 0 );
}
catch (IOException e)
{
System.out.println( "IO Exception." );
e.printStackTrace();
System.exit( 0 );
}
}
}
less..