Электронная библиотека книг Александра Фролова и Григория Фролова.
Shop2You.ru Создайте свой интернет-магазин
Библиотека
Братьев
Фроловых
[Назад]

Исходный текст программы SocketServer.java

Оглавление

Назад

// ==========================================
// SocketServer.java
//(C) Alexandr Frolov, 1998
// E-mail: frolov@glasnet.ru
// Web:    http://www.glasnet.ru/~frolov 
// ==========================================
import java.net.*;
import java.util.*;
import java.io.*;

public class SocketServer
{
  public static void main(String args[])
  {
    System.out.println(
      "* Socket Server *");
      
    ServerSocket ss = null;
    try
    {
      ss = new ServerSocket(9999);
    }  
    catch(Exception ex)
    {
      System.out.println(ex.toString());
      System.exit(0);
    }  
     
    int nPort = ss.getLocalPort();
    
    System.out.println(
      "Local Port: " + nPort);
      
    ServerThread sThread = null;
    
    sThread = new ServerThread(ss);
    sThread.start();
    
    System.out.println(
      "Waiting connection...");
      
    try
    {
      sThread.join();
    }  
    catch(InterruptedException ex)
    {
      System.out.println(ex.toString());
    }  
      
    try
    {
      ss.close();
    }  
    catch(Exception ex)
    {
      System.out.println(ex.toString());
    }  
    
    System.exit(0);
  }  
}

// ============================================
// Class ServerThread
// ============================================
class ServerThread extends Thread
{
  ServerSocket ss = null;
  Socket s = null;
  
  // ============================================
  // ServerThread
  // ============================================
  public ServerThread(ServerSocket sSocket)
  {
    ss = sSocket;
  }
  
  // ============================================
  // run
  // ============================================
  public void run()
  {
    InputStream is;
    OutputStream os;
    
    try
    {
      s = ss.accept();  
    }
    catch(Exception ex)
    {
      stop(); 
    }
    
    System.out.println("Connected.");
    
    try
    {
      is = s.getInputStream();
      os = s.getOutputStream();  
      
      while(true)
      {
	String szStr = recvString(is);
	sendString(os, "* " + szStr + " *");
	os.flush();
	
	System.out.println(szStr);
	
	if(szStr.equals("quit"))
	  break;    
      }
      
      is.close();
      os.close();
    }
    catch(Exception ex)
    {
      stop(); 
    }

    try
    {
      s.close();    
      ss.close();
    }
    catch(Exception ex)
    {
      stop(); 
    }
  }
  
  // ============================================
  // sendString
  // ============================================
  static void sendString(OutputStream os,
    String s)
    throws IOException
  {
    for(int i = 0; i < s.length(); i++)
    {
      os.write((byte)s.charAt(i));
    }
    os.write('\n');
    os.flush();
  }

  // ============================================
  // recvString
  // ============================================
  static String recvString(InputStream is)
    throws IOException
  {
    String szBuf = "";
    int ch = is.read();

    while (ch >= 0 && ch != '\n')
    {
      szBuf += (char)ch;
      ch = is.read();
    }
    return szBuf;
  }
}

[Назад]