java实现简易局域网聊天功能

本文实例为大家分享了java使用UDP模式编写聊天程序的具体代码,供大家参考,具体内容如下

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();
  }
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

您可能感兴趣的文章:

  • 基于java编写局域网多人聊天室
  • 使用Java和WebSocket实现网页聊天室实例代码
  • Java基于socket实现简易聊天室实例
  • 基于Java Socket实现一个简易在线聊天功能(一)
  • java中UDP简单聊天程序实例代码
  • 网页版在线聊天java Socket实现
  • java实现一个简单TCPSocket聊天室功能分享
  • java网络编程学习java聊天程序代码分享
  • Java Socket聊天室编程(一)之利用socket实现聊天之消息推送
  • java Socket简易聊天工具
(0)

相关推荐

  • 网页版在线聊天java Socket实现

    本文为大家分享了一个满足在线网页交流需求的实例,由于java Socket实现的网页版在线聊天功能,供大家参考,具体内容如下 实现步骤: 1.使用awt组件和socket实现简单的单客户端向服务端持续发送消息: 2.结合线程,实现多客户端连接服务端发送消息: 3.实现服务端转发客户端消息至所有客户端,同时在客户端显示: 4.把awt组件生成的窗口界面改成前端jsp或者html展示的界面,java socket实现的客户端改为前端技术实现. 这里首先实现第一步的简单功能,难点在于: 1.没有用过a

  • java实现一个简单TCPSocket聊天室功能分享

    本文实例为大家分享了java实现TCPSocket聊天室功能的相关代码,供大家参考,具体内容如下 1.TCPserver.java import java.net.*; import java.io.*; import java.util.*; import java.util.concurrent.*; public class TCPserver{ private static final int SERVERPORT = 8888; private ServerSocket MyServe

  • java中UDP简单聊天程序实例代码

    学过计算机网络通信的都知道,计算机之间传送数据由两种,即TCP通信和UDP通信.TCP是可靠的面向连接的通信协议,二UDP是不可靠的面向无连接的通信协议. java中有基于TCP的网络套接字通信,也有基于UDP的用户数据报通信,UDP的信息传输速度快,但不可靠! 基于UDP通信的基本模式: (1)将数据打包,称为数据包(好比将信件装入信封一样),然后将数据包发往目的地. (2)接受别人发来的数据包(好比接收信封一样),然后查看数据包中的内容. 客户机 复制代码 代码如下: package com

  • java Socket简易聊天工具

    本文实例为大家分享了一款Socket简易聊天工具,希望大家喜欢. 代码运行如图,看起来还不错 服务端 package qiu; import java.awt.BorderLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.print.Printable; import java.io.BufferedReader; import java.io.IOEx

  • Java Socket聊天室编程(一)之利用socket实现聊天之消息推送

    相关阅读:Java Socket聊天室编程(二)之利用socket实现单聊聊天室 网上已经有很多利用socket实现聊天的例子了,但是我看过很多,多多少有一些问题存在. 这里我将实现一个比较完整的聊天例子,并解释其中的逻辑. 由于socket这一块比较大,所以我将分出几篇来写一个比较完整的socket例子. 这里我们先来实现一个最简单的,服务器与客户端通讯,实现消息推送的功能. 目的:服务器与客户端建立连接,客户端可以向服务器发送消息,服务器可以向客户端推送消息. 1,使用java建立socke

  • 基于java编写局域网多人聊天室

    由于需要制作网络计算机网络课程设计,并且不想搞网络布线或者局域网路由器配置等等这种完全搞不懂的东西,最后决定使用socket基于java编写一个局域网聊天室: 关于socket以及网络编程的相关知识详见我另一篇文章:Java基于socket编程 程序基于C/S结构,即客户端服务器模式. 服务器: 默认ip为本机ip 需要双方确定一个端口号 可设置最大连接人数 可启动与关闭 界面显示在线用户人以及姓名(本机不在此显示) 客户端: 需要手动设置服务器ip地址(局域网) 手动设置端口号 输入姓名 可连

  • java网络编程学习java聊天程序代码分享

    复制代码 代码如下: package com.neusoft.edu.socket;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;/** * 服务器端代码 * 获取客户端发送的信息,显示并且返回对应的回复 *

  • 使用Java和WebSocket实现网页聊天室实例代码

    在没介绍正文之前,先给大家介绍下websocket的背景和原理: 背景 在浏览器中通过http仅能实现单向的通信,comet可以一定程度上模拟双向通信,但效率较低,并需要服务器有较好的支持; flash中的socket和xmlsocket可以实现真正的双向通信,通过 flex ajax bridge,可以在javascript中使用这两项功能. 可以预见,如果websocket一旦在浏览器中得到实现,将会替代上面两项技术,得到广泛的使用.面对这种状况,HTML5定义了WebSocket协议,能更

  • Java基于socket实现简易聊天室实例

    本文实例讲述了Java基于socket实现简易聊天室的方法.分享给大家供大家参考.具体实现方法如下: chatroomdemo.java package com.socket.demo; import java.io.IOException; import java.net.DatagramSocket; public class ChatRoomDemo { /** * @param args * @throws IOException */ public static void main(S

  • 基于Java Socket实现一个简易在线聊天功能(一)

    最近做了一个项目,其中有一个在线网页交流的需求,好久没写代码了,手都生疏了,于是先写demo练练手,分享到我们平台,以此做个记录,方便自己和大家使用. 先给大家说下实现步骤分这样几大步: 1.使用awt组件和socket实现简单的单客户端向服务端持续发送消息: 2.结合线程,实现多客户端连接服务端发送消息: 3.实现服务端转发客户端消息至所有客户端,同时在客户端显示: 4.把awt组件生成的窗口界面改成前端jsp或者html展示的界面,java socket实现的客户端改为前端技术实现. 这里首

随机推荐