我的客户端应用程序需要能够在几种情况下恢复。 打开电源时,客户端从文件读取地址和端口并尝试连接到服务器。 如果这是第一次在此主机上使用此客户端,则尝试使用默认IP地址,但这可能不正确。 用户然后需要输入正确的IP地址。该端口是硬编码的。 现在的工作方式是一秒钟的swing.Timer尝试获取服务器的状态...强大的Java Socket编程
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类似,但与服务器的套接字协议