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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает сервер и клиент 
:(
    Опции темы
vinograd2008
Дата 17.5.2009, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Здравствуйте помогите разобраться почему не работают сервер и клиент. Почему не передаётся строка и нет соединения с клиентом.
Почему при запуске клиента возникает исключение?

Как считать строку из файла, передать её на сторону сервера, после чего передать считанную из файла строку обратно клиенту и записать её в текстовый файл???

Помогите пожайлуста.

Заранее спасибо.


Вот код:

Код

// Клиент
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
class SocketClient extends JFrame implements ActionListener {
JLabel text, clicked;
JButton button;
JPanel panel;
JTextField textField;
Socket socket = null;
PrintWriter out = null;
BufferedReader in = null;
SocketClient(){ //Begin Constructor
text = new JLabel("Text to send over socket:");
textField = new JTextField(20);
button = new JButton("Click Me");
button.addActionListener(this);
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.white);
getContentPane().add(panel);
panel.add("North", text);
panel.add("Center", textField);
panel.add("South", button);
} //End Constructor
public void actionPerformed(ActionEvent event){
Object source = event.getSource();
if(source == button){
//Send data over socket
String text = textField.getText();
out.println(text);
textField.setText(new String(""));
//Receive text from server
try{
String line = in.readLine();
System.out.println("Text received :" + line);
} catch (IOException e){
System.out.println("Read failed");
System.exit(1);
}
}
}
public void listenSocket(){
//Create socket connection
try{
socket = new Socket("127.0.0.1", 5555);
out = new PrintWriter(socket.getOutputStream(), true);
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
} catch (UnknownHostException e) {
System.out.println("Unknown host: localhost");
System.exit(1);
} catch (IOException e) {
System.out.println("No I/O");
System.exit(1);
}
}
public static void main(String[] args){
SocketClient frame = new SocketClient();
frame.setTitle("Client Program");
WindowListener l = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
frame.addWindowListener(l);
frame.pack();
frame.setVisible(true);
frame.listenSocket();
}
}



Код

// Сервер
import java.awt.Color;
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
import java.io.*;
import java.net.*;
class SocketServer extends JFrame implements ActionListener {
JButton button;
JLabel label = new JLabel("Text received over socket:");
JPanel panel;
JTextArea textArea = new JTextArea();
ServerSocket server = null;
Socket client = null;
BufferedReader in = null;
PrintWriter out = null;
String line;
SocketServer(){ //Begin Constructor
button = new JButton("Click Me");
button.addActionListener(this);
panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.setBackground(Color.white);
getContentPane().add(panel);
panel.add("North", label);
panel.add("Center", textArea);
panel.add("South", button);
} //End Constructor
public void actionPerformed(ActionEvent event) {
Object source = event.getSource();
if(source == button){
textArea.setText(line);
}
}
public void listenSocket(){
try{
server = new ServerSocket(5555);
} catch (IOException e) {
System.out.println("Could not listen on port 4444");
System.exit(-1);
}
try{
client = server.accept();
} catch (IOException e) {
System.out.println("Accept failed: 4444");
System.exit(-1);
}
try{
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException e) {
System.out.println("Accept failed: 4444");
System.exit(-1);
}
while(true){
try{
line = in.readLine();
//Send data back to client
out.println(line);
} catch (IOException e) {
System.out.println("Read failed");
System.exit(-1);
}
}
}
protected void finalize(){
//Clean up
try{
in.close();
out.close();
server.close();
} catch (IOException e) {
System.out.println("Could not close.");
System.exit(-1);
}
}
public static void main(String[] args){
SocketServer frame = new SocketServer();
frame.setTitle("Server Program");
WindowListener l = new WindowAdapter() {
    public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
frame.addWindowListener(l);
frame.pack();
frame.setVisible(true);
frame.listenSocket();
}
}

PM MAIL   Вверх
can4ec
Дата 18.5.2009, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Привет!

1. Твой Сервер и Клиент работают. Я догадываюсь, что ошибка у тебя вылетает из-за того что ты сначала запускаешь клиента , а уже потом сервера. Клиент пытается соединиться  socket = new Socket("127.0.0.1", 5555); а сервер еще не запущен, следовательно ни кто порт не прослушивает. По этому и летит ошибка. А так твое приложение даже посылает и принимает smile

2. Что же касается считывания из файла и отправка на сервер. То Вот тебе пример. Считываем по десять строк в лист, запоминаем позицыю на которой остановились, отправляем их сервере, а потом снова начинаем считывать только с той позиции на которой остановились.

Код

public class IOHelper
{
    private static long seek = 0;

    public static List readFile(String fileName)
    {
        RandomAccessFile in = null;
        String line;
        List result = new ArrayList();
        try
        {
            in = new RandomAccessFile(fileName, "r");
            in.seek(seek);
            while (!((line = in.readLine()) == null) && result.size() != 10)
            {
                result.add(line);
            }
            seek = (result.size() == 0) ? 0 : in.getFilePointer();
        } catch (IOException e)
        {
             System.out.println("File doesn't open or fatal error");
        }
         finally
        {
            try { in.close(); } catch (IOException e) {}
        }
        return result;
    }
}


Ну а на слушателе нажатие кнопки производи отправку и прием данных:
Код

public void actionPerformed(ActionEvent event)
    {
        try
        {
            List listInfo = null;
            int index = 0;
            do
            {
                listInfo = IOHelper.readFile("src/file.txt");
                for (Object line : listInfo)
                {
                    out.println((String) line);
                    out.flush();
                    listInfo.set(index, in.readLine());
                }
                System.out.println(listInfo);

            } while (listInfo.size() == 0);
        } catch (Exception e)
        {
            e.printStackTrace();
        }

    }




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

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

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


 




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


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

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