ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UDP案例_在线咨询

2020-12-27 11:34:43  阅读:117  来源: 互联网

标签:DatagramSocket UDP java 在线 案例 new import public String


TalkReceiver 
package 网络编程;

import java.io.BufferedReader;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class TalkReceiver implements Runnable {
    private DatagramSocket server;
    private String from;
    public TalkReceiver(int port,String from)
    {
        this.from = from;
        try {
        server = new DatagramSocket(port);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
    
    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(true)
        {
            byte[]container = new byte[1024*60];
            DatagramPacket packet = new DatagramPacket (container,0,container.length);
            try
            {
                server.receive(packet);
                byte[]datas = packet.getData();
                int len = packet.getLength();
                String str = new String(datas,0,len);
                System.out.println(from + ":" + str);
                if(str.equals("bye")) {
                    break;
                }    
            }catch(IOException e)
            {
                e.printStackTrace();
            }
        }
        server.close();
    }
}

 

TalkSend 
package 网络编程;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.net.SocketException;

public class TalkSend implements Runnable {
    private DatagramSocket client;
    private BufferedReader reader;
    private String toIP; 
    private int toPort; 
    public TalkSend(int port,String toIP, int toPort) {
        this.toIP = toIP;
        this.toPort = toPort;
        try{
            client = new DatagramSocket(port);
            reader = new BufferedReader(new InputStreamReader(System.in));
        }catch(SocketException e) {
            e.printStackTrace();
        }
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        while(true)
        {
            String data;
            try
            {
                data = reader.readLine();
                byte []datas = data.getBytes();
                DatagramPacket packet = new DatagramPacket (datas,0,datas.length,new InetSocketAddress(this.toIP,this.toPort));
                client.send(packet);
                if(data.equals("bye"))
                    break;
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        client.close();
    }
}
TalkStudent 
package 网络编程;
//加入多线程  实现双向交流  模拟在线咨询
public class TalkStudent {

    public static void main(String[] args) {
        
        new Thread(new TalkSend(7777,"localhost",9999)).start();//发送
        new Thread(new TalkReceiver(8888,"学生说")).start();//接收
    }
}

 

TalkTeacher

package 网络编程;

public class TalkTeacher {
    public static void main(String[] args) {
        new Thread(new TalkReceiver(9999,"老师说")).start();//接收
        new Thread(new TalkSend(5555,"localhost",8888)).start();//发送
    }
}

这边还有一个就是   在控制台那边有个新建console的按钮 多建一个  一共是两个   运行老师这个程序  运行学生这个程序 ,旁边还有一个选择是哪个程序 就可以看到了

 

结果如图所示

 

标签:DatagramSocket,UDP,java,在线,案例,new,import,public,String
来源: https://www.cnblogs.com/Galesaur-wcy/p/14196715.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有