Basit bir Java IRC istemcisi

oy
1

Sonradan genişletilmesi umuduyla ile, çok basit bir IRC istemcisi yazmaya çalışıyorum.

Bu noktada birlikte çalışmak gerekiyordu ve Oracle öğretici kopyalanan java ile yazılmış iki sınıfları var. Ne yapmaya çalışıyorum echoserver çalışan ev sahibi hangi müşteri tiplerini yazdırmak böylece EchoClient belli bağlantı noktasında bir ana bilgisayara bağlanmak zorunda olduğunu. Ben öğretici öyle diyor tam olarak ne yapmaya çalışıyorum, ancak ben kopyalayıp kodu yapıştırmadan sonra hata mesajı alıyorum.

EchoClient.java:

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

public class EchoClient {
    public static void main(String[] args) throws IOException {
    if (args.length != 2) {
        System.err.println(
            Usage: java EchoClient <host name> <port number>);
        System.exit(1);
    }

    String hostName = args[0];
    int portNumber = Integer.parseInt(args[1]);

    try (
        Socket echoSocket = new Socket(hostName, portNumber);
        PrintWriter out =
            new PrintWriter(echoSocket.getOutputStream(), true);
        BufferedReader in =
            new BufferedReader(
                new InputStreamReader(echoSocket.getInputStream()));
        BufferedReader stdIn =
            new BufferedReader(
                new InputStreamReader(System.in))
    ) {
        String userInput;
        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println(echo:  + in.readLine());
        }
    } catch (UnknownHostException e) {
        System.err.println(Don't know about host  + hostName);
        System.exit(1);
    } catch (IOException e) {
        System.err.println(Couldn't get I/O for the connection to  +
            hostName);
        System.exit(1);
    }
}

}

EchoServer.java:

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

public class EchoServer {
  public static void main(String[] args) throws IOException {

    if (args.length != 1) {
        System.err.println(Usage: java EchoServer <port number>);
        System.exit(1);
    }

    int portNumber = Integer.parseInt(args[0]);

    try (
        ServerSocket serverSocket =
            new ServerSocket(Integer.parseInt(args[0]));
        Socket clientSocket = serverSocket.accept();
        PrintWriter out =
            new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(
            new InputStreamReader(clientSocket.getInputStream()));
    ) {
        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            out.println(inputLine);
        }
    } catch (IOException e) {
        System.out.println(Exception caught when trying to listen on port 
            + portNumber +  or listening for a connection);
        System.out.println(e.getMessage());
    }
}

}

Ben ile benim terminalden derlenen echoserver çalıştırmayı denediğinizde java EchoServer 2000hatası alıyorum, Error: Could not find or load main class EchoClientve ben aynı hatayı aldığımjava EchoServer 2000

Oluştur 20/10/2018 saat 13:59
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
0

Yankı sunucu örneği bunun nasıl gösterir. İlk müşteri yaratır soket kullanarak, çeşit bir çıkış akış kurmanın:

Socket echoSocket = new Socket(hostName, portNumber);
PrintWriter out =
    new PrintWriter(echoSocket.getOutputStream(), true);

Göndermeye bir mesajım var Ardından, sonucu yazma outile nesne println().

String userInput;
while ((userInput = stdIn.readLine()) != null) {
    out.println(userInput);
    //... 
}

: Sen öğretici sayfasında listeleme koduna bu satırları bulabilirsiniz https://docs.oracle.com/javase/tutorial/networking/sockets/readingWriting.html

Bu bir sokete yazma tek yol değildir, ama bu örnek böyle yapar ve muhtemelen şimdilik bununla bağlı kalmalıdırlar.

Cevap 20/10/2018 saat 16:06
kaynak kullanıcı

oy
0

Eğer komut isteminden başvurunuzu çalıştırıyorsanız - İlk açmayı deneyin cmd.exeolarak yönetici .

Pencerelerde Tipi start menu: cmd , Sonra sağ tıklayıp cmd.exe ve "seçim Yönetici olarak çalıştır ".

Sonra komutta bu yürütmek açar istemi

java knockclient 127.0.0.1 80 test

her zamanki gibi.

Cevap 20/10/2018 saat 14:39
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more