服务器客户端初始化(只有一次)java

问题描述:

我有用java编写的客户端/服务器程序(使用套接字)。它具有建立连接的多种功能。例如:服务器客户端初始化(只有一次)java

public static void some_sender(byte[] x0, byte[] x1) //he is a server 
{ 
    ServerSocket s=new ServerSocket(8888); 
    s.setSoTimeout(10000); 
    Socket incoming=s.accept(); 
    ObjectOutputStream oos = new ObjectOutputStream(incoming.getOutputStream()); 
    ObjectInputStream ios = new ObjectInputStream(incoming.getInputStream()); 

    //some sending and receiving 
    some_sender0(a); 

} 

public static void some_sender0(int a) 
    { 
     ServerSocket s=new ServerSocket(8888); 
     s.setSoTimeout(10000); 
     Socket incoming=s.accept(); 
     ObjectOutputStream oos = new ObjectOutputStream(incoming.getOutputStream()); 
     ObjectInputStream ios = new ObjectInputStream(incoming.getInputStream()); 

     //some sending and receiving 
    } 

我有一个客户端()

public static byte[] some_receiver(byte b) 
{ 
    Socket s=new Socket("127.0.0.1", 8888); 
    ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream()); 
    ObjectInputStream ios=new ObjectInputStream(s.getInputStream()); 
    //some sending and receiving 
    byte[] t=some_receiver0(c); 
    return m; 
} 

public static byte[] some_receiver0(byte c) 
{ 
    Socket s=new Socket("127.0.0.1", 8888); 
    ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream()); 
    ObjectInputStream ios=new ObjectInputStream(s.getInputStream()); 
    //some sending and receiving 

    return y; 
} 

我的问题是如何执行同样的事情(初始化服务器)

ServerSocket s=new ServerSocket(8888); 
s.setSoTimeout(10000); 
Socket incoming=s.accept(); 
ObjectOutputStream oos = new ObjectOutputStream(incoming.getOutputStream()); 
ObjectInputStream ios = new ObjectInputStream(incoming.getInputStream()); 

和(客户端)

Socket s=new Socket("127.0.0.1", 8888); 
ObjectOutputStream oos=new ObjectOutputStream(s.getOutputStream()); 
ObjectInputStream ios=new ObjectInputStream(s.getInputStream()); 

只有一次,并将其用于所有嵌套 功能。
预先感谢您。

+1

静态字段或改变它并使用实例变量(如果你想成为更多的OO)。 – 2013-04-29 20:22:30

谢谢Sotirios Delimanolis的建议。我决定做更多的面向对象。创建了一个有两种方法的类。一个用于启动Socket连接和分配流,另一个用于关闭事件。例如。

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

public class NetworkTransfers { 

public Socket s = null; 
public ObjectOutputStream oos = null; 
public ObjectInputStream ios = null; 

public void activateNetwork() 
{ 
    try { 
     s = new Socket("IP-address", Port); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
    try { 
     oos = new ObjectOutputStream(s.getOutputStream()); 
     ios = new ObjectInputStream(s.getInputStream()); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    }  

} 

public void closeConnections() 
{ 
    try { 
     s.close(); 
     ios.close(); 
     oos.close(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

} 

在服务器端相当相似。 希望有人会有希望。

我建议把它们放到作为服务器/客户端控制器的Singleton类中。在适当的时候初始化它们,并确保它们具有所有必要的getter(而不是setter)和实用程序方法,以便其他类可以使用套接字流。

+0

我将非常感谢代码,因为我在Java中不太好 – 2013-04-30 03:35:02