К@t@LoNeЦ
|
|
Ells ho tenen tot... pero aixo no es suficient |
Регистрация: 12.11.2009
Сообщения: 1,527
Сказал(а) спасибо: 2,161
Поблагодарили: 2,099 раз(а) в 689 сообщениях
Деньги: 2766$
|
Короче поковырялся сегодня - вроде как удалось передать каждому клиенту то, что нужно, но местами набыдлокодил - if в while - масло масленное. Ладно, разбираться потом буду. Все же сдавать уже в следующую пятницу, а еще сортировку по частям на всем этом реализовывать, да и препод по сетевым технологиям в языках ничего не смыслит. Главное, что работает на данном этапе. Плотнее языком летом займусь.
Сервер:
PHP код:
import java.io.*; import java.net.*;
class Server extends Thread { Socket socket; //num - номер клиента, a - номер массивов для метода run() int num=1, a=0; //исходные числа, которые сортируем String line = "6 5 4 3 2 1"; //создает массив из чисел, разделенных пробелом String str[] = line.split("[ ]"); public static void main(String[] args) { try { //i - счетчик подключений, a - номер массивов для метода run() int i = 1,a = 0;
// создаем сервер на локалхост, порт 6665 ServerSocket server = new ServerSocket(6665);
System.out.println("server is started"); System.out.println("\n---------------------------------------");
// слушаем порт while(i<=4) { // WARNING! // Следующие 15 строчек - быдлокод!(не исключено,что есть еще) if (i>3){ server.close(); } else{ // ждём нового подключения, после чего запускаем обработку клиента // в новый вычислительный поток и увеличиваем счётчик на единичку /*!*/ new Server(i, server.accept(), a); //сам не понял, почему надо писать так, но работает
//Инфа о подключенных клиентах System.out.println("\nClient " + i + " connected!"); i++; //увеличиваем счётчик a=a+2; //берем следующие 2 числа } } } catch(Exception e) {System.out.println("init error: "+e); // вывод исключений } }
public Server(int num, Socket socket, int a) { // копируем данные this.socket = socket; this.a = a; this.num = num; // и запускаем новый вычислительный поток (см. ф-ю run()) setDaemon(true); setPriority(NORM_PRIORITY); start(); }
public void run() { try { // из сокета клиента берём поток входящих данных InputStream sin = socket.getInputStream(); // и оттуда же - поток данных от сервера к клиенту OutputStream sout = socket.getOutputStream(); // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); System.out.println("\nSending to " + num + " client!"); // отсылаем клиенту строку = число1_число2 out.writeUTF(String.valueOf(Integer.valueOf(str[a])+" "+ Integer.valueOf(str[a+1]))); // выводим ее на экран System.out.println(String.valueOf(Integer.valueOf(str[a])+" "+ Integer.valueOf(str[a+1]))); // ожидаем пока клиент пришлет строку текста in.readUTF(); // отчет о клиенте System.out.println("Client " + num + " got a pocket!"); System.out.println("\n---------------------------------------"); }catch(Exception e) {System.out.println("init error: "+e);} // вывод исключений } }
Клиент:
PHP код:
import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.Socket;
public class Client extends Thread {
public static void main(String[] args) throws Exception { try { // создаем сокет на локалхост, порт 6665 Socket socket = new Socket("localhost", 6665); // из сокета клиента берём поток входящих данных InputStream sin = socket.getInputStream(); // и оттуда же - поток данных от сервера к клиенту OutputStream sout = socket.getOutputStream(); // Конвертируем потоки в другой тип, чтоб легче обрабатывать текстовые сообщения DataInputStream in = new DataInputStream(sin); DataOutputStream out = new DataOutputStream(sout); String line,c = null; // ожидаем пока клиент пришлет строку текста line = in.readUTF(); //создает массив из чисел, разделенных пробелом String str[] = line.split("[ ]"); System.out.println("I got a pocket!"); //сортировка пузырьком if (Integer.valueOf(str[0]) > Integer.valueOf(str[1])) { c = str[0]; str[0] = str[1]; str[1] = c; } //отправляем серверу ответ out.writeUTF("I got it!"); //выводим то, что получилось на экран System.out.println("line: "+ str[0] +" " + str[1]); } catch(Exception e) // вывод исключений {System.out.println("init error: "+e);} } }
__________________
Последний раз редактировалось К@t@LoNeЦ, 22.05.2014 в 20:23.
|