Serwer w Javie

0

Witam.
Od niedawna pisze w Javie i chcialem napisac pewien serwer wlasnie w tym jezyku. Glownie to chodzi mi o to, ze nie wiem jak sie do tego zabrac. chce wykorzystac sockety i reszte oprogramowac... ale nie wiem jak postawic w ogole serwer. Prosty servlet napisac potrafie, ale chce aby obslugiwal sockety. Jak to zrobic?? I jak pozniej sie odwolywac w programie klienckim do takiego servletu?

I nie odwolujcie mnie do przegladarek bo przejrzalem naprawde duzo i nigdzie nie ma zadowalajacych wynikow. A strony sun'a maja ten minus ze sa po angielsku.

Z gory dzieki za pomoc.

0

Przede wszystkim: do czego ma służyć ten serwer?

W najprostszym przypadku tworzysz klasę Server i ona stanowi główny wątek, który obsługuje ServerSocket. Po przyjęciu połączenia od klienta tworzysz nowy wątek do jego obsługi.

public class Server
{
	private ServerSocket serverSocket;

	public Server(int port)
	{
		try
		{
	 		serverSocket = new ServerSocket(port);
		 	System.out.println("Serwer uruchomiony na porcie " + port);
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
	}

	public void start()
	{
		try
		{
			while(true)
			{
				Socket client = serverSocket.accept();
				// tu uruchamiasz nowy wątek do obsługi klienta
			}
		}
		catch(SocketException e)
		{
			e.printStackTrace();
		}
	}
}

Z programu klienta łączysz się na tym samym porcie.
Od Javy 1.4 możesz też korzystać z NIO do asynchronicznego przesyłania danych.

0

Hmm...
Ten program-serwer chce postawic na pewnym serwerze, tak abym mogl z programu klienckiego sie laczyc pod ten serwer.
Z zalozenia ma to byc cos w rodzaju chata... ale chodzi o sam sposob kompilacji i uruchomienia servletu na serwerze... zwykle servlety http to wiem co i jak. A tutaj to jest problem.

0

Nie sugeruj się servletami ponieważ jest to samodzielny program, który nie wymaga kontenera (w przeciwieństwie do servletu) i działa na nieco "niższym poziomie".
Mając już taką klasę po prostu to uruchamiasz jak każdy program w Javie czy li albo tutaj dopisujesz metodę main:

public static void main(String[] args)
{
	Server s = new Server(5555);
	s.start();
}

albo umieszczasz ją w osobnej klasie, która ma za zadanie tylko wystartować serwer.
Potem uruchamiasz normalnie poleceniem java Server.class i działa. Od tego momentu serwer oczekuje na połączenia na porcie 5555.

0

Ok ... dzieki.
A teraz inne pytanie... mam konto na serwerze w systemie linux, i nie mam pelnych uprawnien. Zalozmy ze jest tam zainstalowana java i mam juz napisany program serwer. Jak go uruchomic?

0

A no właśnie - tu już jest problem. Niestety do tego rozwiązania musisz mieć uprawnienia do uruchamiania nowych procesów.

1 użytkowników online, w tym zalogowanych: 0, gości: 1