利用Datagramsocket创建连接,实现UDP,并使用多线程实现教师端和学生端的聊天。
接收端的程序如下:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package chats;import java.net.DatagramPacket;
import java.net.DatagramSocket;public class talkreceive implements Runnable {DatagramSocket socket = null;//初始化一个socket连接private int port;//端口号private String msgfrom;//消息来源public talkreceive(int port, String msgfrom) {//构造函数this.port = port;this.msgfrom = msgfrom;try {this.socket = new DatagramSocket(this.port);} catch (Exception var4) {var4.printStackTrace();}}public void run() {while(true) {try {byte[] container = new byte[1024];//开创一个字节数组作为缓冲区DatagramPacket packet = new DatagramPacket(container, 0, container.length);//创建一格数据包this.socket.receive(packet);//通过传入的socket连接,接受数据包。byte[] bytes1 = packet.getData();//读取包中数据String ans = new String(bytes1, 0, bytes1.length);System.out.println(this.msgfrom + ":" + ans);if (!ans.trim().equals("bye")) {continue;}//接受到bye则结束聊天。this.socket.close();} catch (Exception var5) {var5.printStackTrace();}return;}}
}

数据发送端的写法:

//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package chats;import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;public class talksend implements Runnable {DatagramSocket socket = null;BufferedReader bufferedReader = null;private int fromport;private String toip;private int toport;public talksend(int fromport, String toip, int toport) {//成员包括发送端口,目标ip,目标端口this.fromport = fromport;this.toport = toport;this.toip = toip;try {this.socket = new DatagramSocket(fromport);this.bufferedReader = new BufferedReader(new InputStreamReader(System.in));//使用bufferreader读取系统流的输入。} catch (Exception var5) {var5.printStackTrace();}}public void run() {while(true) {try {String data = this.bufferedReader.readLine();//流中的一行字符byte[] Data = data.getBytes();DatagramPacket packet = new DatagramPacket(Data, 0, Data.length, new InetSocketAddress(this.toip, this.toport));//InetSocketAddress类创建一个目标地址,并将得到的socket作为数据包的发送链接this.socket.send(packet);String ques = new String(Data, 0, Data.length);if (!ques.trim().equals("bye")) {continue;}//加trim去掉空格。this.socket.close();} catch (Exception var5) {var5.printStackTrace();}return;}}
}

学生类和教师类,创建两个线程,分别为发送和接受。

package chats;public class talkstudent {public talkstudent() {}public static void main(String[] args) {(new Thread(new talksend(7777, "localhost", 9999))).start();//向9999端口发送(new Thread(new talkreceive(8888, "老师"))).start();//在8888端口接收}
}
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package chats;public class talkteacher {public talkteacher() {}public static void main(String[] args) {(new Thread(new talksend(5555, "localhost", 8888))).start();//向8888端口发送(new Thread(new talkreceive(9999, "学生"))).start();//在9999端口接受.}
}

附:
java通过URL类,下载网络资源。
首先可以通过网络抓包的方式,获取目标视频或音乐的url的值。
先创建一个URL对象,之后通过openconnection方法创建连接,由于大多数网站使用https协议,将其进行强制类型转换为HttpURLConnection,万物皆为流,使用inputStream读取http连接,在使用FileOutputStream将内容下载到指定的文件位置。

package URLtest;import java.io.FileOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;public class URLtest {public static void main(String[] args) throws Exception{URL url=new URL("https://m701.music.126.net/20210908204202/62ad2629c5959aa955d40bbe360fb3fd/jdyyaac/obj/w5rDlsOJwrLDjj7CmsOj/10534066865/ec0a/9bbc/3590/b4d04ce9553a85b39d002fbdfa1938e1.m4a");HttpURLConnection httpURLConnection=(HttpURLConnection) url.openConnection();//强转InputStream inputStream=httpURLConnection.getInputStream();FileOutputStream fos=new FileOutputStream("b4d04ce9553a85b39d002fbdfa1938e1.m4a");byte[] bytes=new byte[1024];int len;while((len=inputStream.read(bytes))!=-1){fos.write(bytes,0,bytes.length);}fos.close();inputStream.close();httpURLConnection.disconnect();}
}

java网络编程-实现聊天程序相关推荐

  1. java 网络编程简单聊天_网络编程之 TCP 实现简单聊天

    网络编程之 TCP 实现简单聊天 客户端 1.连接服务器 Socket 2.发送消息 package lesson02;import java.io.IOException;import java.i ...

  2. java socket编程实现聊天程序_java Socket编程 聊天程序 服务器端和客户端

    [java]代码库package com.gufengxiachen.sthreadchatapp; /** * @author GUXIA */ import java.io.BufferedRea ...

  3. [Java网络编程]UDP通信程序练习

    代码如下: package UdpPracticePack;import java.io.BufferedReader; import java.io.IOException; import java ...

  4. java全双工_java网络编程TCP聊天全双工

    我正在实现服务器和客户端之间的简单TCP聊天.我使用多线程,因此服务器和客户端可以同时发送和接收数据(全双工).该程序可以工作,但如果服务器有一个控制台既可以输入发送消息,也可以显示接收消息(对于客户 ...

  5. Java网络编程,一对一聊天

    Java网络编程,一对一聊天 **这个小任务是来自于B站,他的视频名字就是"Java实现实时聊天互动程序"** 要求:就是有2个类,其中一个客户端和一个服务端.要实现从客户端发消息 ...

  6. java网络编程-聊天室

    目录 V01 # 聊天室客户端(V1) # 聊天室服务端(V1) V02 # 聊天室客户端(V2) # 聊天室服务端(V2) V03 V04 # 聊天室客户端(V4) # 聊天室服务端(V4) V05 ...

  7. Java网络编程,使用Java实现UDP和TCP网络通信协议,以及基于UDP的在线聊天室。

    文章目录 前言 一.网络编程概念 1.网络 2. 网络编程的目的 3.想要达到这个效果需要什么 4.网络分层 二.网络编程Java类 1.IP地址:InetAddress 2.端口 3.TCP连接 3 ...

  8. java网络编程,通过TCP,Socket实现多对一的局域网聊天室

    java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...

  9. Java网络编程学习——简单模拟在线聊天

    Java网络编程学习--简单模拟在线聊天 学了java网络,也是该做个小案例来巩固一下了. 本次案例将使用UDP和多线程模拟即时聊天,简单练练手. 1.前提知识 需要知道简单的IO流操作,以及简单的U ...

最新文章

  1. 力扣(LeetCode)刷题,简单+中等题(第29期)
  2. 【Java例题】5.3 线性表的使用
  3. 20应用统计考研复试要点(part21)--概率论与数理统计
  4. 国外网站设计欣赏:30个优秀的国外咖啡网站设计
  5. php背景时间渐变,CSS3怎么实现背景颜色渐变?(图文+视频)
  6. 抖音直播APP软件系统为什么能这么火?反映出的问题又会是什么?
  7. 解决win7光驱驱动找不到的问题
  8. 年报掘金:机构增仓路线图曝光(2010-03-06转载)
  9. Oracle ORA-01017 报错处理
  10. docker搭建php环境
  11. 网页中图片无法显示解决方法
  12. [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL
  13. 有序的map LinkedHashMap
  14. Contains Duplicate II - LeetCode
  15. 【学习笔记】URL和DOI是什么?有什么区别?
  16. 浪迹天涯,总在落叶的季节里
  17. 2.12 FreeRTOS_RingBuff 环形缓存数组的使用
  18. 重庆宇创--扁平化应急指挥云平台解决方案
  19. iOS小技能:UIWebView 被拒的解决方案(用更安全的WKWebView替代UIWebView)
  20. stm32之IIC总线概述

热门文章

  1. PPT插入FLV视频文件的简单方法(转)
  2. Linux将两个文件合并
  3. 日历控件打不开或者某个栏位显示不出来解决方法
  4. Google Guava 只是弟弟,什么才是真正的缓存之王?(荣耀典藏版)
  5. 软测入门(三)Selenium(Web自动化测试基础)
  6. git 的 HEAD~ 和 HEAD^ 区别
  7. 解救阿桑奇?投机者积聚AssangeDAO
  8. highest severity level wasERROR
  9. linux桥接模式不能上网/ping不通主机解决方案
  10. 别乱升级!花呗要上征信了