请教一个关于Socket的问题,大家多帮助!谢谢
请教一个关于Socket的小问题,我现在要在服务器端永久开启一个端口,任意一台客户机访问该端口均循环四次调用,并返回相应的服务器的时间給服务器端。
我现在写了如下代码,但是只有第一次返回了时间,后面则异常了,估计是Socket端口关闭的问题,请问该如何修改才能达到要求?
public class SynTimeServer
{
public SynTimeServer(){}
public static void main( String[] args ) throws IOException
{
ServerSocket ss = new ServerSocket( 8001 );
Socket s = ss.accept();
OutputStream ops = s.getOutputStream(); //建立一个输出流对象
ObjectOutputStream oos = new ObjectOutputStream( ops ); //把输出流放入一个对象输出包装类中让其发送
String serverTime = getNowTime();
ServerTime st = new ServerTime( serverTime );
oos.writeObject( st ); //把对象写入输出流包装类中
oos.close();
s.close();
ss.close();
}
private static String getNowTime()
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowTime = sdf.format(new java.util.Date());
return nowTime;
}
}
public class SynTimeClient
{
public static void main( String[] args ) throws IOException, ClassNotFoundException
{
Socket s = new Socket( "127.0.0.1",8001 );
InputStream ips = s.getInputStream(); //建立一个输入流对象
for( int i = 1;i < 5;i++ )
{
ObjectInputStream ois = new ObjectInputStream( ips ); //把输入流放入一个对象包装类中让其接收
ServerTime st = (ServerTime)ois.readObject(); //将接收到的服务器端传来的ServerTime对象的数据强制转换为ServerTime类型
System.out.println( "第"+i+"次" + st.serverTime.substring( 0,10 ) );
System.out.println( "第"+i+"次" + st.serverTime.substring( 11,19 ) );
ois.close();
}
s.close();
}
}
public class ServerTime implements Serializable
{
public String serverTime;
public ServerTime( String serverTime )
{
this.serverTime = serverTime;
}
}