SXUstudent 2020-05-25 17:18 采纳率: 57.1%
浏览 185
已采纳

eclipse:同一个package的两个java怎么互相发送和接收

主要是完成tcp的主机与服务器的通信,软件eclipce
下面是程序,来自大佬博客:https://blog.csdn.net/LJH_laura_li/article/details/82430038

大佬用的不是eclipse,所以想问问怎么打开两个java文件的调试框,进行两端的输入输出

服务器端:

package tcp;
import java.net.*;
import java.io.*;

public class TcpServer {
    public static void main(String[] args)throws Exception
    {
        try{
            //建立套接字
            ServerSocket server = new ServerSocket(4701);
            //监听
            Socket socket = server.accept();
            //建立连接
            InputStreamReader Sysin = new InputStreamReader(System.in);//键盘读入
            BufferedReader SysBuf = new BufferedReader(Sysin);

            InputStreamReader Socin = new InputStreamReader(socket.getInputStream());//socket读入
            BufferedReader SocBuf = new BufferedReader(Socin);

            PrintWriter Socout = new PrintWriter(socket.getOutputStream());//写入socket

            //通信
            System.out.println("Client:"+SocBuf.readLine());//从客户端接收
            String readline = SysBuf.readLine();
            while(!readline.equals("bye")){
                Socout.println(readline);
                Socout.flush();
                System.out.println("readline"+readline);

                String rl = SocBuf.readLine();//检测接收缓冲区,若非ok则打印错误
                if(!rl.equals("ok"))
                    System.out.println("Client:"+rl);
                else
                    break;

                readline = SysBuf.readLine();
            }
            //关闭IO、socket
            Socout.close();
            Socin.close();
            server.close(); 
        }catch (Exception e){
            System.out.println("Error:"+e);
        }


    }

}

主机端:

package tcp;
import java.net.*;
import java.io.*;

public class TcpClient {

    public static void main(String[] args)throws Exception {
        try{
        //创建socket
                Socket socket = new Socket("192.168.1.4",4700);

                //建立连接
                InputStreamReader Sysin = new InputStreamReader(System.in);//键盘读入
                BufferedReader SysBuf = new BufferedReader(Sysin);

                InputStreamReader Socin = new InputStreamReader(socket.getInputStream());//socket读入
                BufferedReader SocBuf = new BufferedReader(Socin);

                PrintWriter Socout = new PrintWriter(socket.getOutputStream());//写入socket

                //进行通信
                String readline = SysBuf.readLine();//等待键盘键入字符
                while(!readline.equals("bye")){//如果是bye则停止互相发送
                    Socout.println(readline);//写入socket
                    Socout.flush();//刷新缓冲区,让服务器立刻接收到新的消息
                    System.out.println("Client:"+readline);
                    //上3,客户端向服务器发信息

                    //发回客户端
                    System.out.println("Server:"+SocBuf.readLine());//readLine如果未接收到则会停在这里
                    readline = SysBuf.readLine();//客户端再发向服务器
                }
                //关闭IO和socket
                Socout.close();
                Socin.close();
                socket.close();
    }catch(Exception e){
        System.out.println("Error:"+e);}//打印错误
    }
}


  • 写回答

2条回答 默认 最新

  • syyyyyyyyyyyyyyh 2020-05-25 21:36
    关注

    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    //服务端
    public class Server {

    public static void main(String[] args) throws Exception{
        DatagramSocket ds = new DatagramSocket(9900);
        String s = "你好客户端,我是服务端,能收到吗";
        int length = s.getBytes().length;
        String ip = "127.0.0.1";
        int port = 9911;
    
        DatagramPacket dp = new DatagramPacket(s.getBytes(), length, InetAddress.getByName(ip), port);
        ds.send(dp);
    
        byte[] bytes = new byte[1024];
        int length1 = bytes.length;
        DatagramPacket dp1 = new DatagramPacket(bytes, length1);
        ds.receive(dp1);
        byte[] data = dp1.getData();
        System.out.println(new String(data, 0, data.length));
    
        ds.close();
    
    
    
    }
    

    }

    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;

    public class Client {
    //客户端
    public static void main(String[] args) throws Exception{
    DatagramSocket ds = new DatagramSocket(9911);

        byte[] bytes = new byte[1024];
        int length = bytes.length;
        DatagramPacket dp = new DatagramPacket(bytes, length);
        ds.receive(dp);
        byte[] data = dp.getData();
        System.out.println(new String(data, 0, data.length));
    
        String s = "你好服务端,我是客户端,能收到";
        int length1 = s.getBytes().length;
        String ip = "127.0.0.1";
        int port = 9900;
    
        DatagramPacket dp1 = new DatagramPacket(s.getBytes(), length1, InetAddress.getByName(ip), port);
        ds.send(dp1);
    
    
    
        ds.close();
    
    }
    

    }

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已采纳回答 4月29日

悬赏问题

  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示