2004-07-14

一个完整的Socket例子

服务端的程序: 

import java.io.*;
import java.net.*;

public class SocketServer {
    ServerSocket ss=null;
    Socket s=null;
    DataInputStream inStream=null;
    DataOutputStream outStream=null;
     
    public SocketServer() {
        try{
            init();
        }
        catch(Exception e){
            System.out.println(e.toString());
        }
    }
    
    void init() throws Exception{
        ss=new ServerSocket(765);
        s.setSoTimeout(3000);
    }
    
    void waitForClient(){
        try{
            s=ss.accept();
            inStream=new DataInputStream(s.getInputStream());
            outStream=new DataOutputStream(s.getOutputStream());
            outStream.writeUTF("1");
            s.setSoTimeout(3000);
            waitData();
        }
        catch(Exception e){
            System.out.println(e.toString());
        }
    }
    
    void waitData(){
        while(true){
            try{
                String str=inStream.readUTF();
                System.out.println("Server accept: "+str);
                int nu=Integer.parseInt(str)+1;
                if(nu>20){
                    System.out.println("Send end!");
                    break;
                }
                else{
                    str=Integer.toString(nu);
                    outStream.writeUTF(str);
                }
            }
            catch(Exception e){
                System.out.println(e.toString());
                break;
            }
        }
    }
    
    public static void main(String[] args) {
        SocketServer socketServer1 = new SocketServer();
        socketServer1.waitForClient();
    }
}

客户端的程序:


import java.net.*;
import java.io.*;

public class SocketClient{
    Socket s=null;
    DataInputStream inStream=null;
    DataOutputStream outStream=null;
    
    public SocketClient() {
        try{
            init();
            waitData();
        }
        catch(Exception e){
            System.out.println(e.toString());
        }
    }
    
    void init() throws Exception{
        s=new Socket("192.168.0.32",765); //把这里的IP改成你运行SocketServer.class的IP
        inStream=new DataInputStream(s.getInputStream());
        outStream=new DataOutputStream(s.getOutputStream());
        s.setSoTimeout(3000);
    }
    
    void waitData(){
        while(true){
            try{
                String str=inStream.readUTF();
                System.out.println("Client accept: "+str);
                str=Integer.toString(Integer.parseInt(str)+1);
                outStream.writeUTF(str);
            }
            catch(Exception e){
                System.out.println(e.toString());
                break;
            }
        }
    }
    
    public static void main(String[] args) {
        SocketClient socketClient1 = new SocketClient();
    }

没有评论:

发表评论