夜袭和尚庙 发表于 2019-6-3 11:38

【网络编程】一个很low的内网聊天软件

本帖最后由 夜袭和尚庙 于 2019-6-3 11:43 编辑

该软件基于UDP发包总而言之就是非常非常的low{:301_1004:}
刚学到网络编程 所以尝试写了一个不足的地方请各位指导

代码如下:


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

public class ChatTest {
      
      private static final int BUF_SIZE = 1024*1024;
      public static void main(String[] args) {
                System.out.println("欢迎使用内网聊天软件!输入886即可退出软件! ");
                //创建线程任务
                Send s = new Send();
                Receive r = new Receive();
                //创建线程对象
                Thread t1 = new Thread(s);
                Thread t2 = new Thread(r);
                //启动线程任务,接收端先启动 发送端后启动
                t2.start();
                t1.start();
      }
}
//发送端
class Send implements Runnable{
      //创建DatagramSocket
      private DatagramSocket ds = null;
      public void run() {
                try {
                        //本机发送端口为30005
                        ds = new DatagramSocket(30005);
                } catch (SocketException e) {
                        System.out.println("30005发送端口已被占用!请检查!!");
                        return;
                }
                //键盘录入流
                BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
                //字节缓冲区
                byte[] data;
                String line = null;
                try {
                        while((line = bufr.readLine())!=null) {
                              //将键盘获取的数据转换成字节数组
                              data = line.getBytes();
                              //创建一个DatagramPacket对象向内网中的所有用户发送广播端口为30004
                              DatagramPacket dp=new DatagramPacket(data, data.length,InetAddress.getByName("192.168.82.255"),30004);
                              //发送数据
                              ds.send(dp);
                              if(line.equals("886")){
                                        System.out.println("您已退出聊天室!!");
                                        //释放流(感觉脱裤子放屁)
                                        ds.close();
                                        //结束程序
                                        System.exit(0);
                              }
                        }
                }catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                }
      }
}

//接收端
class Receive implements Runnable{
      private static final int BUF_SIZE = 1024*1024;
      private DatagramSocket ds = null;
      @Override
      public void run() {
                try {
                        ds = new DatagramSocket(30004);
                } catch (SocketException e) {
                        System.out.println("30004接收端口已被占用!请检查!!");
                        return;
                }
                //数据缓冲区
                byte[] buf = new byte;
                //创建Datagrampacket对象
                DatagramPacket dp = new DatagramPacket(buf,BUF_SIZE);
                String data;
                try {
                        while(true) {
                              ds.receive(dp);
                              //解析接收数据的IP
                              String ip = dp.getAddress().getHostAddress();
                              //转换成字符串
                              data = new String(dp.getData(),0,dp.getLength());
                              //输出字符串
                              System.out.println(ip+":"+data);
                              if(data.equals("886")) {
                                        System.out.println(ip+"已退出聊天室! 網絡一線牽 珍惜這份緣~");                                       
                              }
                        }
                } catch (IOException e) {
                        e.printStackTrace();
                }
      }
}

夜袭和尚庙 发表于 2019-6-3 16:14

longsui48 发表于 2019-6-3 15:49
估计又是哪个培训机构写出来的 确实很low

不是 看视频自学的{:301_999:}

longsui48 发表于 2019-6-3 18:39

夜袭和尚庙 发表于 2019-6-3 16:14
不是 看视频自学的

UDP的消息处理这样也太简单了 多学学吧

曾经流过的泪 发表于 2019-6-3 11:43

嗯,是挺low的

大象无形 发表于 2019-6-3 11:44

Light紫星 发表于 2019-6-3 11:58

UDP不会漏包吗

czx1260 发表于 2019-6-3 12:30

是挺low的

小夫哥 发表于 2019-6-3 12:39

哇那么炫啊。。。酷

绘龙创意 发表于 2019-6-3 12:46

可以可以·,试试看

97hpa 发表于 2019-6-3 13:24

網絡一線牽 珍惜這份緣~楼主文案好评~~~~

longsui48 发表于 2019-6-3 15:49

{:1_901:}估计又是哪个培训机构写出来的 确实很low
页: [1] 2
查看完整版本: 【网络编程】一个很low的内网聊天软件