1. 程式人生 > >簡單的java socket TCP程式設計 每隔幾秒伺服器向客戶端傳時間

簡單的java socket TCP程式設計 每隔幾秒伺服器向客戶端傳時間

客戶端

package javaSocket;
 
import java.io.*;
import java.net.*;

import org.junit.Test;

import jinghai.base.time.LocalDateTime;
import jinghai.base.utils.BufferUtils;
 
public class ClientThread extends Thread {
    private String IP;
    private int port;
    private OutputStream os ;
    private
static Socket socket; private InputStream is; public ClientThread(String IP ,int port) { this.IP = IP; this.port = port; } @Override public void run() { try { connect(); doRun(); while(true) { doSleep(); } }
catch (Exception e) { e.printStackTrace(); }finally { doClose(); } } public void connect() throws Exception { socket = new Socket(IP,port); os = socket.getOutputStream(); is = socket.getInputStream(); } private
void doRun() throws Exception { getTime(); outputThread(); } private void outputThread() { new Thread(){ public void run() { while(true) { try { outTime(); } catch (IOException e) { e.printStackTrace(); } } } }.start(); } protected void outTime() throws IOException { byte[] bt = new byte[8]; is.read(bt); transform(bt); } private void doSleep() throws Exception { sleep(5000); } private void getTime() throws Exception { os.write("date".getBytes()); os.flush(); } private void transform(byte[] bt) throws IOException { Long l = BufferUtils.toLong(bt, 0, 8); LocalDateTime dt = new LocalDateTime(l); show(dt); } private void show(LocalDateTime dt) { System.out.println(dt); } private void doClose() { try { socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
package javaSocket;
 
public class MyClientSocket{
    public static void main(String[] args) {
        System.out.println("客戶端");
        ClientThread cThread = new ClientThread("127.0.0.1",5555);
        cThread.start();
 
    }
}
//*******************伺服器端執行緒類********************//
package javaSocket;
 
import java.io.*;
import java.net.*;
import jinghai.base.time.LocalDateTime;
import jinghai.base.utils.BufferUtils;
 
public class ServerThread extends Thread {
    private int port;
    private Socket socket;
    private ServerSocket ssocket;
    private InputStream is;
    private OutputStream os;
    public ServerThread(int port) {
        this.port = port;
    }
 
    @Override
    public void run() {
        try {
            connect();
            doRun();
        } catch (Exception e) {
            e.printStackTrace();
        }finally {
            doClose();
        }
    }

    private void connect() throws IOException {
         ssocket = new ServerSocket(port);
         socket = ssocket.accept();
         is = socket.getInputStream();
         os = socket.getOutputStream();
    }

    private void doRun() throws Exception {
        byte[] kk = new byte[8];
        int len = 0;
        if ((len=is.read(kk,0,8))<16) {
            while(true) {
                doSleep();
                byte[] bt = dateTime();
                outputTime(bt);
            
        }}
    }
    
    

    private void doSleep() throws InterruptedException {
        sleep(5000);        
    }

    private byte[] dateTime() {
        LocalDateTime dt;
        dt = LocalDateTime.now();
        return BufferUtils.toBytes(dt, 8);
    }
    
    private void outputTime(byte[] bt) throws IOException {
        
        os.write(bt);
        os.flush();
    }
    
    private void doClose() {
        try {
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
    
}
package javaSocket;

public class MyServerSocket{
    
    public static void main(String[] args) {
        System.out.println("伺服器");
        ServerThread sThread = new ServerThread(5555);
        sThread.start();
    }
}