java网络编程-实现聊天程序
利用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网络编程-实现聊天程序相关推荐
- java 网络编程简单聊天_网络编程之 TCP 实现简单聊天
网络编程之 TCP 实现简单聊天 客户端 1.连接服务器 Socket 2.发送消息 package lesson02;import java.io.IOException;import java.i ...
- java socket编程实现聊天程序_java Socket编程 聊天程序 服务器端和客户端
[java]代码库package com.gufengxiachen.sthreadchatapp; /** * @author GUXIA */ import java.io.BufferedRea ...
- [Java网络编程]UDP通信程序练习
代码如下: package UdpPracticePack;import java.io.BufferedReader; import java.io.IOException; import java ...
- java全双工_java网络编程TCP聊天全双工
我正在实现服务器和客户端之间的简单TCP聊天.我使用多线程,因此服务器和客户端可以同时发送和接收数据(全双工).该程序可以工作,但如果服务器有一个控制台既可以输入发送消息,也可以显示接收消息(对于客户 ...
- Java网络编程,一对一聊天
Java网络编程,一对一聊天 **这个小任务是来自于B站,他的视频名字就是"Java实现实时聊天互动程序"** 要求:就是有2个类,其中一个客户端和一个服务端.要实现从客户端发消息 ...
- java网络编程-聊天室
目录 V01 # 聊天室客户端(V1) # 聊天室服务端(V1) V02 # 聊天室客户端(V2) # 聊天室服务端(V2) V03 V04 # 聊天室客户端(V4) # 聊天室服务端(V4) V05 ...
- Java网络编程,使用Java实现UDP和TCP网络通信协议,以及基于UDP的在线聊天室。
文章目录 前言 一.网络编程概念 1.网络 2. 网络编程的目的 3.想要达到这个效果需要什么 4.网络分层 二.网络编程Java类 1.IP地址:InetAddress 2.端口 3.TCP连接 3 ...
- java网络编程,通过TCP,Socket实现多对一的局域网聊天室
java网络编程,通过TCP,Socket实现多对一的局域网聊天室 可以实现多个客户端连接服务器,服务器接收到信息就会把信息广播到所有的客户端 这是服务器端的代码 View Code import j ...
- Java网络编程学习——简单模拟在线聊天
Java网络编程学习--简单模拟在线聊天 学了java网络,也是该做个小案例来巩固一下了. 本次案例将使用UDP和多线程模拟即时聊天,简单练练手. 1.前提知识 需要知道简单的IO流操作,以及简单的U ...
最新文章
- 力扣(LeetCode)刷题,简单+中等题(第29期)
- 【Java例题】5.3	线性表的使用
- 20应用统计考研复试要点(part21)--概率论与数理统计
- 国外网站设计欣赏:30个优秀的国外咖啡网站设计
- php背景时间渐变,CSS3怎么实现背景颜色渐变?(图文+视频)
- 抖音直播APP软件系统为什么能这么火?反映出的问题又会是什么?
- 解决win7光驱驱动找不到的问题
- 年报掘金:机构增仓路线图曝光(2010-03-06转载)
- Oracle ORA-01017 报错处理
- docker搭建php环境
- 网页中图片无法显示解决方法
- [Azure]使用Powershell输出某台ASM虚拟机的NSG和ACL
- 有序的map LinkedHashMap
- Contains Duplicate II - LeetCode
- 【学习笔记】URL和DOI是什么?有什么区别?
- 浪迹天涯,总在落叶的季节里
- 2.12 FreeRTOS_RingBuff 环形缓存数组的使用
- 重庆宇创--扁平化应急指挥云平台解决方案
- iOS小技能:UIWebView 被拒的解决方案(用更安全的WKWebView替代UIWebView)
- stm32之IIC总线概述