用Socket建立简单的C/S结构的TCP/IP服务 
Java、Socket、TCP/IP、网络编程 
环境:Windows Server 2003 
用户也可以自己写简单的TCP/IP服务 
/*作为Server建立读写二进制时间服务*/ import java.io.*; import java.net.*; public class DaytimeServer {  ServerSocket sock;  public DaytimeServer() {   try{    sock=new ServerSocket(37);   }   catch(IOException e){    System.err.println(e);    System.exit(1);   }  }  protected void renService() {   Socket ios = null;   DataOutputStream os = null;   while(true) {    try{     ios=sock.accept();     System.err.println(ios.getInetAddress().getHostName());     os = new DataOutputStream(ios.getOutputStream());     long time = System.currentTimeMillis();     long distance=(long)(((1970-1900)*365.25)-1+.5);      long sec=distance*24*60*60;     time /= 1000;     time += sec;     os.writeInt((int)time);     os.close();    }    catch(IOException e) {     System.err.println(e);    }   }  }  public static void main(String[] args) {   new DaytimeServer().renService();  } } 
/*读写二进制时间服务,其服务端口要保持一致,与DaytimeServer配合使用*/ import java.io.*; import java.net.*; import java.util.*; public class DaytimeBinary{  public static void main(String[] args){   /*服务基于1900到现在的秒数,而JAVA为1970年,需要求时间差    *1900年减1,而1969/1970加.5*/   long distance=(long)(((1970-1900)*365.25)-1+.5);   //1900-1970的秒数   long sec=distance*24*60*60;   try{    Socket sock=new Socket("127.0.0.1",37);    DataInputStream is=new DataInputStream(new BufferedInputStream        (sock.getInputStream()));    /*服务为无符号整数,而JAVA无此类型的读入,则需要转换     *先读无符号字符型,移位,合并,组装为无符号整数*/     long remote=(((long)(is.readUnsignedByte()&0xff)<<24)|       ((long)(is.readUnsignedByte()&0xff)<<16)|        ((long)(is.readUnsignedByte()&0xff)<<8)|       ((long)(is.readUnsignedByte()&0xff)<<0));    System.out.println("远程秒为"+remote);    System.out.println("1970-1900秒差为"+sec);    System.out.println("其差可用此值建立JAVA基于1970年对象"+(remote-sec));    System.out.println("建立ing....");    Date d=new Date((remote-sec)*1000);    System.out.println("远程时间为"+d.toString());   }   catch(IOException e){    System.err.println(e);   }  } }
   
 
  |