All pastes #550120 Raw Edit

Stuff

public java v1 · immutable
·published 2007-06-08 10:09 UTC
rendered paste body
import java.io.*;import java.net.*;import java.util.*;class SerwerPolecen {	public static void main(String[] args) 	{		new WatekSerweraPolecen().start();		new WatekSerweraPolecen().start();		new WatekSerweraPolecen().start();		new WatekSerweraPolecen().start();		new WatekSerweraPolecen().start();	}}class WatekSerweraPolecen extends Thread {	private DatagramSocket m_gniazdkoDat = null;	private BufferedReader m_strumienPolecen = null;	private int licznik = 0;	WatekSerweraPolecen() 	{		super("Watek Serwera Polecen");		try 		{			// utworzenie nowego gniazdka przeznaczonego do komunikacji 			// z wykorzystaniem datagramów			m_gniazdkoDat = new DatagramSocket();			// zarezerwowanie portu do komunikacji datagramowej, metoda 			// getLocalPort rezerwuje najbliższy wolny port. Dzięki temu 			// unikamy sytuacji gdy port, który chcemy zająć jest 			// wykorzystywany przez inną usługę. 			System.out.println("SerwerPolecen nasluchuje na porcie: " + 							m_gniazdkoDat.getLocalPort());		}		catch (java.io.IOException e) 		{ System.err.println("Nie moge utworzyc gniazdka I/O datagramow.");	 }	}		public void run() 	{		if (m_gniazdkoDat == null)			return;		while(true)		{			try 			{				byte[] bufor = new byte[1048576];				DatagramPacket pakiet;				InetAddress adres;				int port;				String daneDoWyslania = null;								// odebranie zapytania od klienta				pakiet = new DatagramPacket(bufor, 1048576);				m_gniazdkoDat.receive(pakiet);				adres = pakiet.getAddress();				port = pakiet.getPort();				String daneOdebrane = new String(pakiet.getData()).trim();				licznik++;				System.out.println("Zapytanie nr "+ licznik +" z adresu "+ pakiet.getAddress() + " z portu "										 + pakiet.getPort() +				                   " o informacje dla " + daneOdebrane);				// wysłanie odpowiedzi				// pobranie polecenia z pliku				daneDoWyslania = polecenie(daneOdebrane);				// zamienia string w tablice bajtów w celu				// umożliwienia wysłania jej w datagramie				bufor = daneDoWyslania.getBytes();				// utworzenie pakietu przeznaczonego do wysłania				pakiet = new DatagramPacket(bufor, bufor.length, adres, port);				// wysłanie datagramu				m_gniazdkoDat.send(pakiet);				// Jeśli w polu użytkownik zostało podane słowo zamknij				// serwer kończy swoje działanie				if (daneOdebrane.compareTo("zamknij")==0) break;			} 			catch (IOException e) 			{				System.err.println("IOException:  " + e);				e.printStackTrace();			}		}	}	protected void finalize() 	{		if (m_gniazdkoDat != null) 		{			m_gniazdkoDat.close();			m_gniazdkoDat = null;			System.out.println("Zamknięcie gniazdka datagramow.");		}	}	// metoda polecenie, czyta z pliku polecenia	// przeznaczone dla użytkownika	private String polecenie(String kto) 	{		String linia = "Nie ma polecen dla "+ kto;		try 		{			StringBuffer info = new StringBuffer("Wiadomosc wyslana " + new Date().toLocaleString()+": \n");			m_strumienPolecen = new BufferedReader(new InputStreamReader(new FileInputStream(kto+".txt")));			while((linia = m_strumienPolecen.readLine())!=null)				info.append(linia+"\n");				return info.toString();		} 		catch (FileNotFoundException e) 		{ 			System.err.println("Nie moge otworzyc pliku z poleceniami: " + kto + ".txt"); 		}		catch (IOException e)  		{ linia = "Na serwerze wystapil blad IOException.";	 }		return linia;	}}