Как я могу протестировать простое серверно-клиентское приложение на своем домашнем компьютере?

1

Я хочу протестировать это приложение-клиент-клиент simpel на собственной машине дома. Как я могу запустить это в Eclipse, а затем посмотреть, сможет ли другая сторона увидеть мое сообщение. Я хочу в какой-то момент сделать окно чата, которое каждый мог бы иметь на своей машине, и отправлять сообщения всем, кто находится в сети, который связан в окне чата.

Но сначала я должен уметь видеть, что у меня есть связь. Если я должен установить сервер на свой компьютер, или кто-то сказал мне, что на моем компьютере уже установлен сервер, но мне просто нужно было включить его. (Windows 7)

Вопрос: Как я могу протестировать этот клиент-сервер на своем компьютере дома?

Код:

Сторона клиента:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Socket;
import javax.swing.JOptionPane;

public class DateClient {

    public static void main(String[] args) throws IOException {
        String serverAddress = JOptionPane.showInputDialog(
            "Enter IP Address of a machine that is\n" +
            "running the date service on port 9090:");
        Socket s = new Socket(serverAddress, 9090);
        BufferedReader input =
            new BufferedReader(new InputStreamReader(s.getInputStream()));
        String answer = input.readLine();
        JOptionPane.showMessageDialog(null, answer);
        System.exit(0);
    }
}

Серверная сторона:

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Date;

public class DateServer {
    public static void main(String[] args) throws IOException {
        ServerSocket listener = new ServerSocket(9090);
        try {
            while (true) {
                Socket socket = listener.accept();
                try {
                    PrintWriter out =
                        new PrintWriter(socket.getOutputStream(), true);
                    out.println(new Date().toString());
                } finally {
                    socket.close();
                }
            }
        }
        finally {
            listener.close();
        }
    }
}

Код, который я хочу добавить для нового сообщения:

 out.println("Hello Doug, how are you!);

Это не будет отображаться в моем окне сообщения, когда оно появится на экране. Является ли 127.0.0.1 всегда IP-адресом, который необходимо ввести при тестировании из eclipse или как я могу изменить его, чтобы я мог позволить пользователю определить свой собственный IP-адрес.

Теги:

3 ответа

0
Лучший ответ

Вам не нужен сервер.

В Eclipse (при условии правильности вашего кодирования) вы можете одновременно запускать несколько программ (файлы Java с основным методом).

Сначала скажем, DateServer → Run As → Java Application Next, скажем, DateClient → Run As → Java Application

Для запуска этого вам не нужен дополнительный сервер, но Win 7 может попросить вас разрешить разблокировать эти программы от доступа к сети. Вы должны сказать "да" этим разрешениям.

Если вы хотите почувствовать себя отдельным клиентом и сервером, это может быть лучше

  1. Храните DateClient и DateServer в двух разных проектах
  2. Скомпилируйте оба проекта как JARs
  3. Откройте две разные консоли DOS и запустите эти два приложения в этих отдельных консолях DOS.
  • 0
    Когда вы говорите, открыть их в двух разных консолях DOS, он просто открывается в консоли DOS, если вы введете имя. Ненавижу это говорить, но уже давно я использую консоль DOS.
  • 0
    Разве JAR - это не просто исполняемый файл на рабочем столе?
Показать ещё 1 комментарий
1

Вы можете просто открыть два терминала. Для DateClient просто используйте localhost или 127.0.0.1 в качестве адреса. Если вы действительно должны использовать Eclipse, вы можете запустить одну из программы из Eclipse, а другую - с терминала.

  • 0
    И где найти терминал? Какие есть другие варианты вместо Eclipse?
0

Сторона клиента:

import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ClientSide {

public static void main(String[] args) {
    try {
        Socket s = new Socket("localhost", 1234);
        DataOutputStream dos = new DataOutputStream(s.getOutputStream());
        dos.writeUTF("Hello");
    } catch (IOException ex) {
        System.out.println("Connection failed");
    }
}
}

Сторона сервера:

import java.io.DataInputStream;
import java.io.IOException;
import java.net.ServerSocket;

public class ServerSide {

public static void main(String[] args) {
    try {
        ServerSocket ss = new ServerSocket(1234);
        System.out.println("waiting for connection...");
        DataInputStream dis = new DataInputStream(ss.accept().getInputStream());
        System.out.println("Successfully Connected\n" + dis.readUTF());
    } catch (IOException ex) {
        System.out.println("Server Not Started : " + ex);
    }
}
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню