Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何防止mac终端(命令提示窗口)上的客户端返回null并使其等待发送文本消息_Java_Cmd_Client - Fatal编程技术网

Java 如何防止mac终端(命令提示窗口)上的客户端返回null并使其等待发送文本消息

Java 如何防止mac终端(命令提示窗口)上的客户端返回null并使其等待发送文本消息,java,cmd,client,Java,Cmd,Client,我正在尝试制作一个程序,该程序将互相发送和接收文本消息(UTF 8字符串),类似于两部手机在两个单独的.java文件(一个客户端一个服务器)(eclipse)中使用两个单独的线程互相发送文本消息,但文本消息将出现在命令提示符(mac终端输出)上 null的屏幕截图(见右侧窗口): 在屏幕截图中,左侧窗口将是服务器,右侧窗口将是客户端 服务器的命令行参数为: java DirectMessengerServer -l 3000 客户端的命令行参数为: java DirectMessengerC

我正在尝试制作一个程序,该程序将互相发送和接收文本消息(UTF 8字符串),类似于两部手机在两个单独的.java文件(一个客户端一个服务器)(eclipse)中使用两个单独的线程互相发送文本消息,但文本消息将出现在命令提示符(mac终端输出)上

null的屏幕截图(见右侧窗口):

在屏幕截图中,左侧窗口将是服务器,右侧窗口将是客户端

服务器的命令行参数为:

java DirectMessengerServer -l 3000
客户端的命令行参数为:

java DirectMessengerClient 3000
“-l”稍后将用于区分客户端和服务器(暂时忽略此项)

端口号为3000

客户端代码(DirectMessengerClient.java):

服务器代码(DirectMessengerServer.java):

import java.io.*;
导入java.net。*;
导入java.util.*;
导入静态java.nio.charset.StandardCharsets.*;
公共类DirectMessenger服务器
{
公共静态void main(字符串args[])引发IOException
{
线程服务器=新线程()
{
公开作废运行()
{   
System.out.println(“服务器线程正在运行”);
ServerSocket服务器_socket=null;
Socket-client\u-Socket;
字符串消息1;
对于(int i=0;i
我的问题是:客户端不等待文本消息,而是出于某种原因(不确定为什么)返回null。有没有办法让客户端在退出并返回null之前等待文本消息

import java.io.*;
import java.net.*;
import java.util.*;
import static java.nio.charset.StandardCharsets.*;
public class DirectMessengerClient
{
    public static void main(String args[]) throws IOException
    {
        Thread Client = new Thread () 
        {
            public void run ()
            {   
                System.out.println("Client thread is now running");
                ServerSocket server_socket = null;
                Socket client_socket = null;
                Socket smtpSocket = null;  
                DataOutputStream outputstream = null;
                DataInputStream inputstream = null;

                try
                {
                    System.out.println("Try block begins..");
                    int port_number1= Integer.valueOf(args[0]);
                    // ServerSocket listener = new ServerSocket(port_number1);
                    System.out.println("Listening for connections..");
                    System.out.println( "Listening on port: " + Integer.toString( port_number1 ) );
                    client_socket= server_socket.accept();
                    BufferedReader reader= new BufferedReader(new InputStreamReader(client_socket.getInputStream(), "UTF8"));
                    PrintWriter output= new PrintWriter( client_socket.getOutputStream(), true );
                    outputstream = new DataOutputStream(smtpSocket.getOutputStream());
                    inputstream = new DataInputStream(smtpSocket.getInputStream());
                    String input_line= reader.readLine();
                    System.out.println( "Received from client: " );
                    System.out.println( input_line );
                    output.println( input_line );
                }
                catch ( Exception e )
                {
                    System.out.println( e.getMessage() );
                }
            //server.close();
            // }
            }

        };
        Client.start();
    }
}
import java.io.*;
import java.net.*;
import java.util.*;
import static java.nio.charset.StandardCharsets.*;
public class DirectMessengerServer
{
    public static void main(String args[]) throws IOException
    {
        Thread Server = new Thread () 
        {
            public void run ()
            {   
                System.out.println("Server thread is now running");
                ServerSocket server_socket = null;
                Socket client_socket;
                String message1;

                for(int i = 0; i < args.length; i++)
                {
                    if(args[i].equals("-l"))
                    {
                        try
                        {
                            System.out.println("Try block begins..");
                            int port_number1= Integer.valueOf(args[i+1]);
                            ServerSocket listener = new ServerSocket(port_number1);
                            System.out.println("Listening for connections..");
                            System.out.println( "Listening on port: " + Integer.toString( port_number1 ) );
                            Socket socket = listener.accept();
                            client_socket= server_socket.accept();
                            BufferedReader reader= new BufferedReader(new InputStreamReader(client_socket.getInputStream(), "UTF8"));
                            PrintWriter output= new PrintWriter( client_socket.getOutputStream(), true );
                            String input_line= reader.readLine();
                            System.out.println( "Received from client: " );
                            System.out.println( input_line );
                            output.println( input_line );
                        }
                        catch ( Exception e )
                        {
                            System.out.println( e.getMessage() );
                        }
                    //server.close();
                    }
                }
            }
        };
        Server.start();
    }
}