私のクライアントアプリケーションは、いくつかの状況で回復できる必要があります。 電源がオンになると、クライアントはファイルからアドレスとポートを読み取り、サーバーへの接続を試みます。 このクライアントで初めてこのクライアントが使用されている場合は、デフォルトのIPアドレスが試されますが、これは正しくない可能性があります。 その後、ユーザーは正しいIPアドレスを入力する必要があります。ポートはハードコードされています。 それが今で動作する方法は... 1秒swing.Timerは、サーバのステータスを取得しようとしている 強力なJavaソケットプログラミング
statusTimer = new Timer(ONE_SECOND, new ActionListener() {
public void actionPerformed(ActionEvent e) {
final byte GET_STATUS = 20;
SendCommand(GET_STATUS, null);
}
});
statusTimer.start();
ユーザーが接続するように要求された接続がない場合は
...private void SendCommand(byte command, byte[] parameters) {
if ((null == socket) || (null == outputStream) || socket.isClosed())
if (JOptionPane.YES_OPTION ==
JOptionPane.showConfirmDialog(null, "Connect?"))
Connect();
...
private void Connect() {
String s = (String)
JOptionPane.showInputDialog(null, "Enter IP Address", ipAddress);
if (validateIp(s)) {
ipAddress = s;
connectTask = new ConnectTask();
connectTask.start();
...
ソケットが開かれ、ioストリームが設定され、RxThreadが開始されます。
class ConnectTask extends Thread {
@Override public void run() {
try {
if (null == socket) socket = new Socket(ipAddress, TCP_PORT);
if (null == outputStream) outputStream = socket.getOutputStream();
if (null == inputStream) inputStream = socket.getInputStream();
if (null == rxThread) rxThread = new RxThread();
...
例えば、この時点で起こることができるいくつかの悪いものがあります:
1.クライアントをオンにすると、サーバーがオフである可能性があります。クライアントがソケットを自動的に開き、IOストリームを設定し、サーバの電源が入ってから続ける最善の方法は何ですか?
2.同様に、サーバーは読み込み中、書き込み中、またはどちらも実行されていない間に電源を切断することがあります。電源が復旧した後で自動的に回復する良い方法はありますか?
3.上記のようにIPアドレスを修正する必要がある場合があります。
ユーザーがクライアントアプリケーションを閉じたり開いたり、システムの電源を入れ直さなくても、これらの状況や他の状況を処理することはいいでしょう。 防弾Javaクライアントソケットにはどのようなアプローチが必要ですか?
Thisとthisは、サーバソケットと似ていますが、契約している