`

java学习笔记: 实现简易局域网聊天程序

    博客分类:
  • java
阅读更多

 

/*
使用UDP模式,编写一个聊天程序
有发送和接收数据2部分,
一个线程接收,一个线程发送

由于发送和接收动作是不一致的,所以要使用2个run方法
而且这两个方法要封装到不同的类中

本程序忽略了部分异常的处理,也未加入UI组件
这样比较简洁

发送端口9998
接受端口9999
用的是局域网广播地址,所以自己发的消息自己也收到了

[示例]:简易控制台聊天程序
*/
import java.net.*;
import java.io.*;
class Demo
{
  public static void main(String[] args) throws Exception
  {
    DatagramSocket sendSocket = new DatagramSocket(9998);  //发送端
    DatagramSocket receSocket = new DatagramSocket(9999);  //接收端
    new Thread(new MsgSend(sendSocket)).start();           //发送线程
    new Thread(new MsgRece(receSocket)).start();           //接受线程
  }
}

class MsgSend implements Runnable     //发送
{
  private DatagramSocket dsock;
  public MsgSend(DatagramSocket dsock)
  {
    this.dsock= dsock;
  }

  public void run()
  {
    BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
    String lineStr = null;
    try
    {        
      while(true)
      {
        lineStr = bufr.readLine();
        if(lineStr!=null)
        {
          if(lineStr.equals("over886"))
          {
            break;
          }
          else
          {
            byte[] dataBuf = lineStr.getBytes();
            DatagramPacket dataPack =   //数据打包
            new DatagramPacket( dataBuf,
                                dataBuf.length,
                                InetAddress.getByName("192.168.1.255"), //广播
                                9999 //目标端口
                              );
            dsock.send(dataPack);
          }
        }
      }
      bufr.close();
      dsock.close();
    }
    catch(Exception e)
    {
      throw new RuntimeException("发送失败!");
    }
  }
}

class MsgRece implements Runnable    //接收
{
  private DatagramSocket dsock;
  public MsgRece(DatagramSocket dsock)
  {
    this.dsock= dsock;
  }

  public void run()
  {
    try
    {
      while(true)
      {
          byte[] dataBuf = new byte[1024];
          DatagramPacket dataPack = new DatagramPacket(dataBuf,dataBuf.length);
          dsock.receive(dataPack);  //将获取的数据保存到指定的数据包
          String ip = dataPack.getAddress().getHostAddress();
          String data = new String(dataPack.getData(),0,dataPack.getLength());
          int port = dataPack.getPort();
          System.out.println(); 
          System.out.println("来自ip为 "+ip+" <对方端口>: "+port+" 的消息");
          System.out.println(data);        
      }
    }
    catch(Exception e)
    {
      throw new RuntimeException("接受失败!");
    }
    finally
    {
      dsock.close();
    }
  }
}

 

 

 

  • 大小: 30.8 KB
0
0
分享到:
评论

相关推荐

    2021-学习相关-Android 局域网简易云端笔记系统源码.zip

    这个压缩包文件“2021-学习相关-Android 局域网简易云端笔记系统源码.zip”包含了一个Android应用程序的源代码,该程序设计用于在局域网内实现简单的云端笔记功能。开发者或者学习者可以通过研究这个源码来了解...

    Android程序研发源码Android 局域网简易云端笔记系统源码.rar

    在Android程序开发中,构建一个局域网简易云端笔记系统是一项具有挑战性的任务,它涉及到网络编程、数据存储以及用户界面设计等多个方面的技术。在这个项目中,开发者将学习到如何利用Android SDK创建一个本地网络...

    Android 局域网简易云端笔记系统源码.zip

    本篇文章将深入解析一个名为"Android局域网简易云端笔记系统"的源码项目,它是一个基于Android平台,利用Java编程语言实现的局域网内的云端笔记应用。这个应用旨在提供一种便捷的方式,让在同一局域网内的设备能够...

    Android源码——局域网简易云端笔记系统源码.zip

    这个压缩包文件包含了一个基于Android开发的局域网简易云端笔记系统的源代码,以及相关的截图资源。这个系统可能是一个小型的、本地网络内的应用程序,允许用户在设备间同步和分享笔记,无需通过互联网连接,提高了...

    Android 局域网简易云端笔记系统源码

    【Android 局域网简易云端笔记系统源码】是一个针对Android平台开发的本地网络共享应用,旨在实现设备间通过局域网进行笔记的快速同步与分享。这个项目的核心功能是利用Android系统的网络编程能力,创建一个简易的云...

    Android局域网简易云端笔记系统源码.zip

    这篇内容将深入解析"Android局域网简易云端笔记系统源码"的相关知识点,主要涵盖Android应用开发、局域网通信以及云端笔记系统的实现原理。 首先,我们要了解的是Android应用开发的基础。Android是一种基于Linux...

    安卓Android源码——局域网简易云端笔记系统源码.zip

    这个压缩包文件包含了一个基于安卓Android平台的局域网简易云端笔记系统的源代码,适合对Android应用开发感兴趣的开发者学习和研究。以下是对这个项目的一些详细解释和知识点介绍: 1. **安卓开发环境**:首先,你...

    Android代码-局域网简易云端笔记系统源码.zip

    在本项目中,我们讨论的是一个基于Android平台的局域网简易云端笔记系统。这个开源项目为开发者提供了一个实现本地网络共享和存储笔记的示例,适用于那些希望学习如何在Android设备之间通过局域网进行数据同步的...

    Android 局域网简易云端笔记系统源码.zip源码资源下载

    这是一个基于Android平台的局域网简易云端笔记系统的源码资源,使用了Java语言进行开发,并且结合了Apache的相关技术。这个项目旨在实现一个能够在局域网内共享和存储笔记的应用,用户可以在同一网络环境下通过手机...

    Android 局域网简易云端笔记系统源码.rar

    这个压缩包文件“Android 局域网简易云端笔记系统源码.rar”包含了开发一个基于Android平台的局域网内简单云笔记应用的所有源代码。这个系统允许用户在局域网内的设备之间同步和共享笔记,提供了基本的云端存储功能...

    note.zip_Java编程_Java__Java编程_Java_

    "note.zip"暗示这是一个压缩文件,其中可能包含了Java源代码,很可能是一个云端笔记系统的实现,可能用于在局域网内共享和存储笔记。 【描述详解】 描述中提到,这是一个局域网简易云端笔记系统,包含了客户端和...

Global site tag (gtag.js) - Google Analytics