在 main 中调用方法有问题吗?简单 Client/server
trouble calling methods in main? simple Client/server
注意:我的第一个 Whosebug POST!哇哦!
大家好,所以我构建了一个简单的客户端服务器程序,它只接收一个字符串然后 returns 它,但是由于某种原因我无法让我的 main 正确调用这些方法而且我没有不明白为什么它不起作用。有人可以看一下并告诉我我错了什么 missing/doing 吗?我知道我的网络逻辑是可靠的,但不是电话。我认为是时候换新眼睛了,任何事情都有帮助!谢谢。
主线:
public class FileRetrieve_Easy_main
{
public static void main(String[] args)
{
new Thread(new SimpleServer()).start();
new Thread(new SimpleClient()).start();
}
}
客户:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client
{
public static class SimpleClient implements Runnable
{
@Override
public void run()
{
Socket socket = null;
try
{
Thread.sleep(3000);
socket = new Socket("localhost", 3333);
PrintWriter outWriter = new PrintWriter(socket.getOutputStream(),true);
outWriter.println("Hello Mr. Server!");
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
}
finally
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}// end run
}//end simple client
}
服务器:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
public static class SimpleServer implements Runnable
{
@Override
public void run()
{
ServerSocket serverSocket = null;
while (true)
{
try
{
serverSocket = new ServerSocket(3333);
Socket clientSocket = serverSocket.accept();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.println("Client said :"+inputReader.readLine());
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
serverSocket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}//end while
}// end run
}//end simple server
}//end class
您的服务器 Runnable 的名称是 Server.SimpleServer。您的客户端 Runnable 的名称是 Client.SimpleClient。你让它们嵌套 类,你可以在这里阅读:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
默认包里都是类吗?
如果你这样做会怎样:
public class FileRetrieve_Easy_main
{
public static void main(String[] args)
{
new Thread(new Server.SimpleServer()).start();
new Thread(new Client.SimpleClient()).start();
}
}
注意:我的第一个 Whosebug POST!哇哦!
大家好,所以我构建了一个简单的客户端服务器程序,它只接收一个字符串然后 returns 它,但是由于某种原因我无法让我的 main 正确调用这些方法而且我没有不明白为什么它不起作用。有人可以看一下并告诉我我错了什么 missing/doing 吗?我知道我的网络逻辑是可靠的,但不是电话。我认为是时候换新眼睛了,任何事情都有帮助!谢谢。
主线:
public class FileRetrieve_Easy_main
{
public static void main(String[] args)
{
new Thread(new SimpleServer()).start();
new Thread(new SimpleClient()).start();
}
}
客户:
import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class Client
{
public static class SimpleClient implements Runnable
{
@Override
public void run()
{
Socket socket = null;
try
{
Thread.sleep(3000);
socket = new Socket("localhost", 3333);
PrintWriter outWriter = new PrintWriter(socket.getOutputStream(),true);
outWriter.println("Hello Mr. Server!");
}
catch (InterruptedException e)
{
e.printStackTrace();
}
catch (UnknownHostException e)
{
e.printStackTrace();
}
catch (IOException e)
{
}
finally
{
try
{
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}// end run
}//end simple client
}
服务器:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Server
{
public static class SimpleServer implements Runnable
{
@Override
public void run()
{
ServerSocket serverSocket = null;
while (true)
{
try
{
serverSocket = new ServerSocket(3333);
Socket clientSocket = serverSocket.accept();
BufferedReader inputReader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
System.out.println("Client said :"+inputReader.readLine());
}
catch (IOException e)
{
e.printStackTrace();
}
finally
{
try
{
serverSocket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}//end while
}// end run
}//end simple server
}//end class
您的服务器 Runnable 的名称是 Server.SimpleServer。您的客户端 Runnable 的名称是 Client.SimpleClient。你让它们嵌套 类,你可以在这里阅读:https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html
默认包里都是类吗?
如果你这样做会怎样:
public class FileRetrieve_Easy_main
{
public static void main(String[] args)
{
new Thread(new Server.SimpleServer()).start();
new Thread(new Client.SimpleClient()).start();
}
}