美文网首页
Java--Socket demo

Java--Socket demo

作者: _Raye | 来源:发表于2017-09-25 19:20 被阅读0次

创建服务器

1.在指定的端口上创建服务器套接字
2.通过accept()方法监听客户端的连接
3.启动一个线程,进行I/O操作

package org.mobiletrain;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

class clientHandler implements Runnable{
    private Socket client;
    public clientHandler(Socket client) {
        this.client = client;
    }
    @Override
    public void run() {
        try {
            InputStream in = client.getInputStream();
            BufferedReader br = new BufferedReader(new InputStreamReader(in, "utf-8"));
            OutputStream out = client.getOutputStream();
            PrintStream ps = new PrintStream(out);
            String tempstr;
            while((tempstr = br.readLine()) != null){
                if (tempstr.equals("bye")) {
                    client.close();
                    break;
                }
                ps.println(tempstr.toUpperCase());
            }
        }
        catch (IOException e) {
            e.printStackTrace();
        }       
    }
}

public class Test02 {

    //查看当前网络连接 netstat -na
    public static void main(String[] args) {
        ExecutorService service = Executors.newCachedThreadPool();
        
        //括号内参数是端口,一般写1024以上的端口号
        try (ServerSocket server = new ServerSocket(1234)){
            System.out.println("server isRunning...");
            while(true){
                
                try {
                    
                    //该方法是一个阻塞方法,如果没有客户端连上服务器,就一直保持阻塞
                    Socket client = server.accept();
                    
                    service.execute(new clientHandler(client));                 
                } 
                catch (IOException e) {
                    
                }
                service.shutdown();
            }
        } 
        catch (IOException e) {
            e.printStackTrace();
        }
    }
}

创建客户端连接服务器

public class Test03 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        try (Socket socket = new Socket("10.7.155.73", 1234)){                  
            InputStream in = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(in);
            BufferedReader br = new BufferedReader(isr);
            OutputStream out = socket.getOutputStream();
            PrintStream ps = new PrintStream(out);             
            String tempstr = scanner.nextLine();
            while (!tempstr.equals("bye")) {
                ps.println(tempstr);
                System.out.println(br.readLine());
                tempstr = scanner.nextLine();
            } 
        } 
        catch (Exception e) {
            e.printStackTrace();
        }
        scanner.close();
    }
}

相关文章

网友评论

      本文标题:Java--Socket demo

      本文链接:https://www.haomeiwen.com/subject/ntazvttx.html