Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

TCP сървър на JAVA
http://mcu-bg.com/mcu_site/viewtopic.php?f=16&t=10088
Страница 1 от 1

Автор:  E1 [ Пон Апр 30, 2012 12:30 pm ]
Заглавие:  TCP сървър на JAVA

Някой може ли да обясни с няколко думи как може да се накара TCP сървър(Java) да върне файл(например jpg или pdf)? Искам да извиквам от браузъра: http://localhost:8080/test.pdf, при което да се отваря въпросния файл. Имам инсталиран Tomcat, който е конфигуриран на порт 8080. Единственото, което не знам е, как в самия сървър да пренасоча към файла.

Например, да преправя този код, с GET да връща test.pdf:

import java.io.*;
import java.net.*;

class TCPServer
{
public static void main(String argv[]) throws Exception
{
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(8080);

while(true)
{
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient =
new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
System.out.println("Received: " + clientSentence);
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}

Автор:  ike [ Пон Апр 30, 2012 2:52 pm ]
Заглавие:  Re: TCP сървър на JAVA

Не ти ли трябва HTTP сървър, а не TCP?
http://docs.oracle.com/javase/6/docs/jr ... mmary.html

Автор:  E1 [ Пон Апр 30, 2012 3:42 pm ]
Заглавие:  Re: TCP сървър на JAVA

Трябва ми TCP. Но нещо не успявам да намеря пример, удобен за адаптиране.

Автор:  E1 [ Съб Май 12, 2012 5:13 pm ]
Заглавие:  Re: TCP сървър на JAVA

Успях с предходната част. Сега искам index.html да включва автоматично връщане на определен вид файлове в текущата директория(например, .doc). Целта е да се обновява автоматично списъкът, когато изтрия или добавя файл.

Автор:  NikB [ Съб Май 12, 2012 8:27 pm ]
Заглавие:  Re: TCP сървър на JAVA

И какъв е проблема като получиш в сървъра заявка за index.html:
- да изчетеш файловете в папката;
- да си направиш списъка;
- да го форматираш HTML;
- да му сложиш хедъра;
- и да го върнеш като отговор?

Екстрите - после (по-добре ще бъде списъка с файловете да е предварително направен, но ефективните начини, които знам, са зависими от ОС - MSDN ReadDirectoryChangesW function )

Автор:  E1 [ Нед Май 13, 2012 1:17 am ]
Заглавие:  Re: TCP сървър на JAVA

Май не го обясних много добре... Искам в index.html да се променя автоматично списъкът с файловете, които се предлагат. С доста ровене стигнах до един пример, който използва аплет за целта, като има няколко ограничения. Обаче се зарежда и реално не действа. Става дума за това: http://www.rgagnon.com/javadetails/java-0185.html

По самия сървър, който симулирам имам следния въпрос:
Когато го тестам от компютъра, на който е инсталиран - работи. Опитвам се отдалечено да пристъпя чрез IP/index.html, но ми връща 404, което тълкувам, че намира сървъра, но не и файла. Къде го търси? В папката, в от която се стартира сървъра ли и защо се получава това?(деактивирам Firewall при тестовете).
(Имайте предвид, че с Java се занимавам съвсем отскоро)

Автор:  NikB [ Нед Май 13, 2012 10:29 am ]
Заглавие:  Re: TCP сървър на JAVA

Много добре си го обяснил и се надявам и аз да съм отговорил добре, чудно, защо не ми вярваш :)
Нали това съм написал:
- сървърът ти получава заявка за index.html
- сървърът ти изчита списъка с файловете в папката
- прави списъка с файловете в html формат (прикачам пример)
- праща го като отговор.
Какво толкова?

Прикачени файлове:
example.jpg
example.jpg [ 125.28 KiB | Прегледано 6135 пъти ]

Автор:  E1 [ Нед Май 13, 2012 1:48 pm ]
Заглавие:  Re: TCP сървър на JAVA

Ще трябва да се откажа от това, доколкото виждам. Едва накарах сървъра да тръгне, сега ако трябва да си "приказва" с index...

Автор:  NikB [ Нед Май 13, 2012 1:58 pm ]
Заглавие:  Re: TCP сървър на JAVA

E1 написа:
Ще трябва да се откажа от това, доколкото виждам. Едва накарах сървъра да тръгне, сега ако трябва да си "приказва" с index...

Стига глупости! :)
Всеки амбициозен десетокласник може да напише подобно нещо, ако има кой да му направи сървъра.
Не се отказвай.

Автор:  E1 [ Нед Май 13, 2012 2:29 pm ]
Заглавие:  Re: TCP сървър на JAVA

Сървър имам. Знам как да открия кой файл се иска, но вече три дни стоя до 3-4 сутринта, а не мога да намеря код за сортиране, който да връща листинг на файловете в директорията. Вярно, че търсех за клиентската страна, но ми идва в повече да започна ровенето отначало за сървърната страна. На всичко отгоре, идея си нямам как да вкарам върнатото от сървъра в HTML. Ще ми трябват още няколко дни за това. И всичко само за идеята. Принципно, не обичам да се отказвам, но като сложа на везната, че нищо не получавам от цялата операция(освен да си погъделичкам самолюбието)...

Автор:  NikB [ Нед Май 13, 2012 2:44 pm ]
Заглавие:  Re: TCP сървър на JAVA

Аз не работя на Java (имам сложен един еклипс, ама не съм го изучил :)), но принципно, щом пишеш на Java, за задачата ти няма значение дали е сървърна или клиентска страна - файловите операции не би трябвало да зависят от ОС.

Значи:
1. Когато в сървъра получиш заявка за Index.html - изпрати към клиента нещо свое (например само текста "Proba").
2. След това виж как се прави списък от наличните файлове (на мен ще ми отнеме час, да ти го направя на Java - 100% го има в нета, но след 10м започва F1 от Барселоба :))
3. Обходи списъка с файловете и от името на всеки файл формирай елемент от списък (или от таблица или div) на HTML и получения стринг (или масив от стрингове) го прати към клиента

Страница 1 от 1 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/