Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> server i client 
V
    Опции темы
binaryman
Дата 27.9.2009, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.7.2009

Репутация: нет
Всего: нет



Підскадіжь буть-ласка як мені правильно реалізувати чат ... між Клієнтом і Сервером... Коли я пробую надіслати повідомлення в мене вибиває помилку! і саме повідомлення не відображається.......
клієнт
Код

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;

import com.example.files;


public class client {
public static void main (String args[]) throws IOException{
    int port =0; int i=0;
    Socket cl = null; 
    BufferedWriter writ= null;
    BufferedReader read = null;
    InetAddress ob =  InetAddress.getLocalHost();
    try{
    cl = new Socket(ob,9008);
    writ = new BufferedWriter(new OutputStreamWriter(cl.getOutputStream()));
    read = new BufferedReader(new InputStreamReader(cl.getInputStream()));
    PrintWriter out = new PrintWriter(writ,true);
    
    //    writ.write("client ip"+ob.getHostAddress());
    out.println("yes j come");
        writ.flush();
        System.out.println(ob+" "+read.readLine());
    
    }catch (IOException e) {
        System.err.println("error "+e);
    }finally {
        try {
            cl.close();
            read.close();
            writ.close();
        } catch (IOException e2) {    
        }    }}}



сервер
Код

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

class e implements Runnable{
    BufferedReader read = null;
    BufferedWriter write = null;
    ServerSocket server = null;
    Socket incoming = null;
    int connekt = 0;
    e(Socket i  , int c ){
        incoming =i;    connekt =c;
    } @Override
     public void run(){
        try {
            try{
                read = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
                write = new BufferedWriter(new OutputStreamWriter(incoming.getOutputStream()));
                System.out.println("Server type");
                Scanner in  = new Scanner(read);
                boolean done = false;
                while (!done&&in.hasNextLine()) {
                    String line = in.nextLine();
                    System.out.println(line);
                    if (line.trim().equals("pk"));
                    done =true;
                }
                //    System.out.println(read.readLine());
                //System.out.println("Server wait for client" );
                //write.write("Server wait for client") ;
                write.flush();
            }catch (Exception e) {
                e.printStackTrace();
            }
            finally {
                try{
                    read.close();
                    write.close();
                    incoming.close();
                    server.close();
                    
                }catch (Exception e) {
                    e.printStackTrace();
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    
}


public class threadserve {
public static void main (String args[]){
    try {
        Socket incoming  = null;
        int c = 0;
        ServerSocket server = new ServerSocket(9008);
        InetAddress ob =  InetAddress.getLocalHost();
        System.out.println("IP servera   "+ob);
        // = InetAddress.getLocalHost().getHostName();
            while (true) {
            incoming = server.accept();
            String name = incoming.getLocalAddress().getHostName();
            System.out.println("incoming "+c+" "+incoming.getLocalSocketAddress());
            Runnable r = new e(incoming,c);
            Thread t = new Thread(r);
            t.start();
            c++;
        }
        
    } catch (Exception e) {
        e.printStackTrace();
    }
    
}
}


PM MAIL Skype   Вверх
Galaran
Дата 27.9.2009, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 25.5.2009

Репутация: нет
Всего: 2



Exception вылетал так как ты пытался закрыть ServerSocket, который просто объявил и, даже не передавал. SocketServer закрывается только один раз. Соединение с клиентом закрывается закрытием связанного с ним Socket, ну и потоков вначале.

Примерно так: ввод сообщений с консоли

клиент:

Код

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;

public class TestClient {

      private static BufferedReader consoleReader = new BufferedReader(new InputStreamReader(System.in));

      public static String readString() {
            String readed = null;

            try {
                  readed = consoleReader.readLine();
            } catch (IOException ex) {
                  ex.printStackTrace();
            }
            return readed;
      }

      public static void main(String args[]) throws IOException {
            InetAddress ob = InetAddress.getLocalHost();

            Socket socket = null;
            PrintWriter writer = null;
            BufferedReader reader = null;
            try {
                  socket = new Socket(ob, 9008);
                  writer = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()), true);
                  reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                  while (true) {
                        String line = readString();
                        writer.println(line);
                        writer.flush();
                        System.out.printf("Recive from %s: %s\n", ob.getHostAddress(), reader.readLine());
                  }
            } catch (IOException e) {
                  System.err.println("error " + e);
            } finally {
                  try {
                        reader.close();
                        writer.close();
                        socket.close();
                  } catch (IOException e2) { }
            }
      }

}


сервер:

Код

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;

class ClientRunnable implements Runnable {

      BufferedReader reader = null;
      PrintWriter writer = null;
      Socket incoming = null;
      int connectId;

      ClientRunnable(Socket i, int c) {
            incoming = i;
            connectId = c;
      }

      @Override
      public void run() {
            try {
                  reader = new BufferedReader(new InputStreamReader(incoming.getInputStream()));
                  writer = new PrintWriter(new OutputStreamWriter(incoming.getOutputStream()), true);
                  String line;
                  while ((line = reader.readLine()) != null) {
                        System.out.printf("Message from %d: %s\n", connectId, line);
                        if (line.equals("pk")) {
                              System.out.println("stop!");
                              break;
                        }
                        writer.println(line);
                  }
            } catch (Exception e) {
                  e.printStackTrace();
            } finally {
                  try {
                        reader.close();
                        writer.close();
                        incoming.close();
                  } catch (Exception e) {
                        e.printStackTrace();
                  }
            }
      }
}

public class TestServer {

      public static void main(String args[]) {
            try {
                  Socket incoming = null;
                  int connectId = 0;
                  ServerSocket server = new ServerSocket(9008);
                  InetAddress ob = InetAddress.getLocalHost();
                  System.out.println("Started, IP: " + ob.getHostAddress());
                  while (true) {
                        incoming = server.accept();
                        String name = ob.getHostName();
                        System.out.println("Incoming: " + connectId + " " + incoming.getLocalSocketAddress());
                        Runnable r = new ClientRunnable(incoming, connectId);
                        Thread t = new Thread(r);
                        t.start();
                        connectId++;
                  }
            } catch (Exception e) {
                  e.printStackTrace();
            }

      }

}

PM MAIL   Вверх
binaryman
Дата 27.9.2009, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 15.7.2009

Репутация: нет
Всего: нет



Дуже дякою smile  smile 
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Работа с сетью | Следующая тема »


 




[ Время генерации скрипта: 0.0437 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.