java 记录一下socket的server与clien

来源:互联网 发布:a股进msci的意义 知乎 编辑:程序博客网 时间:2024/04/30 06:14

t

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.test.server;
 
import java.io.IOException;
import java.net.ServerSocket;
 
import org.apache.log4j.Logger;
 
public class Server{
     
    privatestatic final Logger logger = Logger.getLogger(Server.class);
 
    publicstatic ServerSocket server =null;  
     
    static{
        try{
            server =new ServerSocket(5678);
        }catch (IOException e) {
            logger.error("Server set up error: ", e);
        }  
    }
     
    publicstatic void stop(){
        if(server !=null){
            try{
                server.close();
            }catch (IOException e) {
                logger.error("Server close error: ", e);
            }
        }
    }
     
    publicstatic void main(String[] args) {
        Server.stop();
    }
     
}

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
package com.test.server;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;
 
import org.apache.log4j.Logger;
 
public class ServerThread implementsRunnable {
 
    privatestatic final Logger logger = Logger.getLogger(ServerThread.class);
 
    privateSocket socket;
 
    publicServerThread(Socket socket) {
        this.socket = socket;
    }
 
    @Override
    publicvoid run() {
//       String line;
        BufferedReader is =null;
        Writer writer =null;
        if(socket == null) {
            logger.error("Server down!");
            return;
        }
        StringBuilder sb =new StringBuilder();
        try{
            is =new BufferedReader(newInputStreamReader(socket.getInputStream()));
            String temp;
            intindex;
            temp = is.readLine();
            System.out.println("line is: "+ temp);
            while(temp != null) {
                System.out.println(temp);
                if((index = temp.indexOf("eof")) != -1) {// 遇到eof时就结束接收
                    sb.append(temp.substring(0, index));
                    break;
                }
                sb.append(temp);
                temp = is.readLine();
            }
            // logger.info(sb.toString());
            System.out.println(sb.toString());
            writer =new OutputStreamWriter(socket.getOutputStream());
            writer.write("Hello Client.");
            writer.write("eof\n");
            writer.flush();
        }catch (IOException e) {
            logger.error("Read information error: ", e);
        }finally {
            try{
                if(is != null) {
                    is.close();
                }
                if(writer != null) {
                    writer.close();
                }
                if(socket != null) {
                    socket.close();
                }
            }catch (IOException e) {
                logger.error("Close the IO session error: ", e);
            }
 
        }
    }
 
}

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com.test.server;
 
import java.io.IOException;
import java.net.Socket;
 
import org.apache.log4j.Logger;
 
public class SocketServer {
 
    privatestatic final Logger logger = Logger.getLogger(SocketServer.class); 
     
    publicvoid connect() {         
        try{                      
            while(true) {                 
                Socket socket = Server.server.accept(); 
//                socket.getRemoteSocketAddress();
                newThread(new ServerThread(socket)).start(); 
            
        }catch (IOException e) { 
            logger.error("Server set up error: ", e); 
        
   
    }  
     
    publicstatic void main(String[] args) {
        SocketServer ss =new SocketServer();
        ss.connect();      
    }
 
}

 

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
package com.test.client;
 
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.net.Socket;
import java.net.UnknownHostException;
 
import org.apache.log4j.Logger;
 
public class SocketClient {
 
    privatestatic final Logger logger = Logger.getLogger(SocketClient.class);
 
    publicvoid client() {
        Socket client =null;
        BufferedReader is =null;
        Writer writer =null;
        try{
            client =new Socket("172.16.13.41",5678);
 
            writer =new OutputStreamWriter(client.getOutputStream());
            writer.write("Hello Server.");
            writer.write("eof\n");
            writer.flush();
 
            is =new BufferedReader(newInputStreamReader(client.getInputStream()));
            StringBuffer sb =new StringBuffer();
            String temp;
            intindex;
            while((temp = is.readLine()) != null) {
                if((index = temp.indexOf("eof")) != -1) {
                    sb.append(temp.substring(0, index));
                    break;
                }
                sb.append(temp);
            }
            // logger.info(sb.toString());
            System.out.println(sb.toString());
        }catch (UnknownHostException e) {
            e.printStackTrace();
        }catch (IOException e) {
            e.printStackTrace();
        }finally {
            try{
                if(is != null) {
                    is.close();
                }
                if(writer != null) {
                    writer.close();
                }
                if(client != null) {
                    client.close();
                }
            }catch (IOException e) {
                logger.error("Close the IO session error: ", e);
            }
        }
 
    }
 
    publicstatic void main(String[] args) {
        SocketClient sc =new SocketClient();
        sc.client();
    }
 
}
0 0
原创粉丝点击