Java

本类阅读TOP10

·使用MyEclipse开发Struts框架的Hello World!(录像1)
·hibernate配置笔记
·AOP编程入门--Java篇
·linux下Tomcat 5.0.20 与 Apache 2 安装/集成/配置
·在win2003下整合了整合Tomcat5.5+ apache_2.0.53+ mod_jk_2.0.47.dll
·构建Linux下IDE环境--Eclipse篇
·Jsp 连接 mySQL、Oracle 数据库备忘(Windows平台)
·ASP、JSP、PHP 三种技术比较
·Tomcat5.5.9的安装配置
·AWT GUI 设计笔记(二)

分类导航
VC语言Delphi
VB语言ASP
PerlJava
Script数据库
其他语言游戏开发
文件格式网站制作
软件工程.NET开发
用Socket建立简单的C/S结构的TCP/IP服务

作者:未知 来源:月光软件站 加入时间:2005-5-13 月光软件站

用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);
  }
 }
}




相关文章

相关软件