java中套接字,如何在java中获得一个开放的套接字?

Java中,我如何获得一个开放的套接字?我有2个JFrame;在第一个JFrame中,我打开了Client socket的连接.在同一个JFrame中,我创建了另一个JFrame(JFrame2)的实例.现在我想从JFrame1获取相同的Socket到JFrame2继续与我的服务器Socket交谈:

login.java(First JFrame)

try {

cliente = new Socket("localhost", 4444);

salida = new ObjectOutputStream(cliente.getOutputStream());

entrada = new ObjectInputStream(cliente.getInputStream());

} catch (UnknownHostException e) {

System.err.println("Don't know about host: localhost.");

System.exit(1);

} catch (IOException e) {

System.err.println("Couldn't get I/O for the connection to: localhost.");

System.exit(1);

}

login.java(第一个Jframe)

try {

while ((mensaje_entrada=(String)entrada.readObject()) != null) {

try {

me=td.encrypt(mensaje_entrada);

m2=td.decrypt(me);

} catch (Exception ex) {

Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex);

}

System.out.println("e:"+ me);

System.out.println("de:"+ m2);

System.out.println(mensaje_entrada);

if(mensaje_entrada.equals("20")){

mensaje_salida=""+txt_usuario.getText()+","+txt_password.getText();

System.out.println(mensaje_salida);

salida.writeObject( mensaje_salida );

salida.flush();

mensaje_entrada=(String)entrada.readObject();

System.out.println(mensaje_entrada);

if(mensaje_entrada.equals("1")){

m.setLocationRelativeTo(null);

m.setVisible(true);

//JOptionPane.showMessageDialog(this,"Funciona!!");

break;

}else if(mensaje_entrada.equals("2")){

JOptionPane.showMessageDialog(this,"Usuario o contraseña incorrecta!","Error!",JOptionPane.ERROR_MESSAGE);

break;

}

}

}

} catch (EOFException ex) { //This exception will be caught when EOF is reached

System.out.println("End of file reached.");

} catch (ClassNotFoundException ex) {

JOptionPane.showMessageDialog(this,ex.getMessage());

} catch (IOException ex) {

JOptionPane.showMessageDialog(this,ex.getMessage());

}

最佳答案 请看一下

Singleton的实现

有了它,您可以从任何地方以优雅的方式访问您的对象,并保证它将被唯一地实例化.

遵循单例方法的简单实现:

package foo.bar;

import java.io.IOException;

import java.net.Socket;

public final class MySingletonSocket extends Socket {

private static Socket clientSocket;

static {

try {

clientSocket = new MySingletonSocket("localhost", 4444);

} catch (Exception e) {

e.printStackTrace();

}

}

private MySingletonSocket(final String address, final int port) throws IOException {

super(address, port);

}

public static final Socket getInstance() {

return clientSocket;

}

}

从JFrame1您可以访问它,如:

MySingletonSocket.getInstance()

从JFrame2,您可以以相同的方式访问它.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值