在IDEA中同时运行2个或以上相同的java程序

在日常编写测试代码时,有时候会需要在idea上同时运行两个及以上相同的java程序,如:想运行两个CLIENTLOGIN测试聊天室效果。

1.点击Edit Configurations…

2.点击Modify options开启下拉框

3.进行如图所示的勾选

4.即可在IDEA中同时运行2个或以上相同的java程序

 

 

注:上述为新版本idea设置方法 若你的idea为老版本 按以下步骤进行设置:

1.按照新版本方法(上面方法第一步)进入设置窗口

2.如图进行勾选

 

1.TCP通信原理

TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网路虚拟链路,一旦建立虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信。
Java对基于TCP协议的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信!
Java为客户端提供了Socket类,为服务器端提供了ServerSocket类。也就是说,客户端是通过Socket类实现的,而服务端是通过ServerSocket实现的。

 

2.TCP发送数据的步骤

1.创建客户端的Socket对象(Socket);
2.获取输出流,写数据;
3.使用打印流装饰输出流;
4.释放资源。
按照上述步骤编写的代码如下所示:

 

package com.example.demo.chat;

import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.util.Scanner;

public class TcpClient {
    public static void main(String[] args) throws IOException {
        //创建客户端Socket对象
        Socket socket = new Socket("127.0.0.1",9999);
        //获取输出流写数据
        OutputStream out = socket.getOutputStream();
        PrintStream ps = new PrintStream(out);
        Scanner scanner = new Scanner(System.in);
        String line =null;
        while(true){
            System.out.println("请说");
            line = scanner.nextLine();
            if("end".equals(line))
                break;
            ps.println(line);
        }
        scanner.close();
        ps.close();
        out.close();
    }
}

 

3.TCP接收数据的步骤

1.创建服务器端的Socket对象(SocketServer);
2.监听客户端的连接;
3.获取输入流,读数据,并显示在控制台;
4.使用BufferReader装饰输入流对象;
5.释放资源。
按照上述步骤编写的代码如下所示:

 

package com.example.demo.chat;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class TcpServer {
    public static void main(String[] args) throws IOException {
        System.out.println("服务器已启动,正在监听客户端的连接");
        ServerSocket serverSocket = new ServerSocket(9999);
        //监听客户端的连接
        Socket socket = serverSocket.accept();
        //获取输入流
        InputStream inputStream = socket.getInputStream();
        //使用BufferedReader装饰输入流
        BufferedReader br=new BufferedReader(new InputStreamReader(inputStream));
        String line;
        while((line=br.readLine())!=null){
            System.out.println("服务器收到的信息:"+line);
        }
        //释放资源
        br.close();
        socket.close();
        serverSocket.close();
    }

    }

4.效果展示

客户端执行效果演示:

 

服务器执行效果演示:

 

另外:需要注意的是,程序运行的时候需要先启动服务器端的程序,以便于服务器可以首先监听客户端的连接,否则运行程序会报服务器拒绝连接的错误

而由于一般Java程序运行的时候只有一个主线程和一个垃圾回收线程,因为我们程序的客户端的主线程一直在监听用户的输入数据,所以,如果想要实现客户端与服务器的双向聊天,需要使用到多线程来解决,有兴趣的小伙伴可以自己尝试一下。

原文地址:http://www.cnblogs.com/ZhuAo/p/16928698.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性