服务器客户端初始化(只有一次)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());
只有一次,并将其用于所有嵌套 功能。
预先感谢您。
答
谢谢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
静态字段或改变它并使用实例变量(如果你想成为更多的OO)。 – 2013-04-29 20:22:30