0

我的程序有问题。为了解释它,我将使用一个示例:

我有两个程序,A 和 B。A 用套接字控制 B,A 有客户端,B 有服务器。

A客户端代码:

package clientTimer;

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

import javax.swing.JOptionPane;


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

public class Client {
        private String action;
        private String ip;

        public Client(String action,String ip) {
                this.action=action;
                this.ip=ip;
                String serverName = "server";
                int port = 9999;
                try {
                        Socket client = new Socket(ip, port);
                        OutputStream outToServer = client.getOutputStream();
                        DataOutputStream out = new DataOutputStream(outToServer);
                        out.writeUTF(action);
                        InputStream inFromServer = client.getInputStream();
                        DataInputStream in =new DataInputStream(inFromServer);
                        new Countdown(in.readUTF(),true);
                        client.close();
                }catch(IOException e) {
                        e.printStackTrace();
                }
        }
}

B服务器代码:

package serverTimer;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.SocketException;

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

public class Server extends Thread {
   private String correct;

   public Server() {
       run();
   }


   public void run() {
           correct="q";
         try {
            ServerSocket serverSocket = new ServerSocket(9999);
            while(true) {
              Socket server = serverSocket.accept();
              DataInputStream in = new DataInputStream(server.getInputStream());
              new Viewer(in.readUTF());
              DataOutputStream out = new DataOutputStream(server.getOutputStream());
              if (correct.length()==5) {
                  out.writeUTF(correct);
              } else {
                  out.writeUTF("a");
              }
              server.close();
           }
         }catch(SocketTimeoutException s) {
            System.out.println("Socket timed out!");
         }catch(IOException e) {
            e.printStackTrace();
         }
   }
}

如您所见,客户端发送和接收字符串,服务器也是如此。我的问题是:服务器必须向客户端发送同一包中对象的 toString() 方法(在代码中字符串称为“正确”)。我不知道我该怎么做。具有 toString 方法的对象在包的另一个文件(Viewer(String))中初始化。

谢谢。

编辑:对不起,对我来说有点难以解释。在一个简单的方案中,我需要的是:A 对 -> B 对 -> A 或 A 输出流-> B 输入流-B 输出流-> A 输入流说“做某事”。A 的 B 输出流有问题 -> A 输入流。输出流必须通过另一个类(在 B 包中)的 toString() 方法发送字符串产品。

该程序是一个远程控制的定时器,A包有控制器,B包有查看器。我通过套接字将 A 命令发送到 B,但我需要 B“偶尔”向 A 发送当前时间的“报告”。

我不能把所有的程序都写在这里,它太“大”了。如果你愿意,我可以给你发一封包含所有文件的电子邮件。

4

0 回答 0