JAVA TCP通信练习

1、Server端

package com.hhdys.serviceimpl;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

/**
 * Created by hhdys on 16/7/22.
 */
public class Server {
    private static List<Socket> clients = new ArrayList<Socket>();

    public static void main(String[] args) {
        try {
            System.out.println("begin==================");
            ServerSocket serverSocket = new ServerSocket(8088);
            while (true) {
                System.out.println("请输入你要进行的操作!");
                Scanner scanner = new Scanner(System.in);
                while (scanner.hasNextInt()) {
                    int i = scanner.nextInt();
                    if (i == 1) {
                        read(serverSocket);
                    } else {
                        write();
                    }
                }
                scanner.close();
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("end==============");
    }

    private static void read(ServerSocket serverSocket) throws Exception {
        System.out.println("开始监听===" + clients.size());

        final Socket socket = serverSocket.accept();
        clients.add(socket);
        new Thread(new Runnable() {
            public void run() {
                try {
                    InputStream in = socket.getInputStream();

                    Scanner scanner = new Scanner(in);
                    while (true) {
                        while (scanner.hasNextLine()) {
                            System.out.println(scanner.nextLine());
                        }
                        TimeUnit.SECONDS.sleep(1);
                    }

                } catch (IOException e) {
                    e.printStackTrace();
                }catch (Exception e){
                    e.printStackTrace();
                }
            }
        }).start();
    }

    public static void write() throws Exception {
        System.out.println("发送server消息====");
        Socket socket = clients.get(0);
        OutputStream out = socket.getOutputStream();
        BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(out));
        writer.write("我是服务端哈哈哈哈!你好");
        writer.newLine();
        writer.flush();
      //  writer.close();
        // out.close();
    }

}

2、Client端

package com.hhdys.serviceimpl;

import java.io.*;
import java.net.Socket;
import java.util.Scanner;
import java.util.concurrent.TimeUnit;

/**
 * Created by hhdys on 16/7/22.
 */
public class Client {

    private static Socket socket=null;

    public static void main(String[] args){
        System.out.println("begin==========");
        try {
            socket=new Socket("127.0.0.1",8088);
            socket.setKeepAlive(true);
            System.out.println("client======");
            OutputStream out = socket.getOutputStream();
            InputStream in = socket.getInputStream();
            final BufferedWriter writer=new BufferedWriter(new OutputStreamWriter(out));
            final Scanner scanner1 = new Scanner(in);
            Scanner scanner=new Scanner(System.in);
            while(true){
                System.out.println("输入你的操作!");
                if(scanner.hasNextInt()){
                    int i=scanner.nextInt();
                    if(i==1){
                        new Thread(new Runnable() {
                            public void run() {
                                try {
                                    writer.write("我是客户端哈哈哈哈!你好");
                                    writer.newLine();
                                    writer.flush();
                                } catch (IOException e) {
                                    e.printStackTrace();
                                }
                            }
                        }).start();
                    }else{
                        while (scanner1.hasNextLine()) {
                            System.out.println(scanner1.nextLine());
                        }
                        scanner1.close();
                    }
                }
                TimeUnit.SECONDS.sleep(1);
            }

        } catch (IOException e) {
            e.printStackTrace();
        }catch (Exception e){
            e.printStackTrace();
        }

        System.out.println("end===========");
    }
}

转载于:https://my.oschina.net/hhdys412/blog/723869

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值