【unity3d 手机游戏源码】【365 锦鲤 源码】【源码分析精华】java inputstream源码

1.跪求一个Java编写的多人聊天程序源代码
2.javaio流涉及到哪些设计模式
3.java程序MP3播放器源代码

java inputstream源码

跪求一个Java编写的多人聊天程序源代码

       import java.io.InputStream;

       import java.io.DataInputStream;

       import java.io.InputStreamReader;

       import java.io.OutputStream;

       import java.io.DataOutputStream;

       import java.io.BufferedReader;

       import java.net.ServerSocket;

       import java.net.Socket;

       import java.io.IOException;

       import java.util.Date;

       class Server

       {

       public Server()

       {

       try

       {

       ServerSocket s=new ServerSocket();

       Socket ss=s.accept();

       OutputStream out=ss.getOutputStream();

       DataOutputStream dout=new DataOutputStream(out);

       InputStream in=ss.getInputStream();

       DataInputStream din=new DataInputStream(in);

       System.out.print(din.readUTF()+"!");

       dout.writeUTF("你已经连接到服务器"+"\t"+"你的地址:"+ss.getInetAddress()+"\t"

       +"你的链接端口:"+ss.getLocalPort()+"\n");

       new ReadMessage(din).start();

       new SendMessage(dout).start();

       }

       catch (IOException e)

       {

       e.printStackTrace();

       }

       }

       public static void main(String[] args)

       {

       new Server();

       }

       }

       //接受客户端信息

       class ReadMessage extends Thread

       {

       private DataInputStream din;

       public ReadMessage(DataInputStream din)

       {

       this.din=din;

       }

       public void run()

       {

       String str;

       try

       {

       while (true)

       {

       str=din.readUTF();

       System.out.println(new Date().toLocaleString()+"客户端说:"+str);

       if (str.equals("bye"))

       {

       System.out.println("客户端下线!");

       break;

       }

       }

       }

       catch (IOException e)

       {

       e.printStackTrace();

       }

       }

       }

       // 发出服务器信息

       class SendMessage extends Thread

       {

       private DataOutputStream dout;

       public SendMessage(DataOutputStream dout)

       {

       this.dout=dout;

       }

       public void run()

       {

       InputStreamReader inr=new InputStreamReader(System.in);

       BufferedReader buf=new BufferedReader(inr);

       String str;

       try

       {

       while(true)

       {

       str=buf.readLine();

       dout.writeUTF(str);

       if (str.equals("bye"))

       {

       System.out.println("服务器退出!");

       System.exit(1);

       }

       }

       }

       catch (IOException e)

       {

       e.printStackTrace();

       }

       }

       }

       import java.io.InputStream;

       import java.io.DataInputStream;

       import java.io.InputStreamReader;

       import java.io.OutputStream;

       import java.io.DataOutputStream;

       import java.io.BufferedReader;

       import java.net.Socket;

       import java.io.IOException;

       import java.util.Date;

       class Client

       {

       public Client()

       {

       try

       {

       Socket s=new Socket("..1.2",);

       InputStream in=s.getInputStream();

       DataInputStream din=new DataInputStream(in);

       OutputStream out=s.getOutputStream();

       DataOutputStream dout=new DataOutputStream(out);

       dout.writeUTF("服务器你好!我是客户端");

       System.out.println(din.readUTF());

       new Thread(new SenderMessage(dout)).start();

       new Thread(new ReaderMessage(din)).start();

       }

       catch (IOException e)

       {

       e.printStackTrace();

       }

       }

       public static void main(String[] args)

       {

       new Client();

       }

       }

       class ReaderMessage implements Runnable

       {

       private DataInputStream din;

       public ReaderMessage(DataInputStream din)

       {

       this.din=din;

       }

       public void run()

       {

       String str;

       try

       {

       while(true)

       {

       str=din.readUTF();

       System.out.println(new Date().toLocaleString()+"服务器说:"+str);

       if (str.equals("bye"))

       {

       System.out.println("服务器已经关闭,此程序自动退出!");

       break;

       }

       }

       }

       catch (IOException e)

       {

       e.printStackTrace();

       }

       }

       }

       class SenderMessage implements Runnable

       {

       private DataOutputStream dout;

       public SenderMessage(DataOutputStream dout)

       {

       this.dout=dout;

       }

       public void run()

       {

       String str;

       InputStreamReader inf=new InputStreamReader(System.in);

       BufferedReader buf=new BufferedReader(inf);

       try

       {

       while (true)

       {

       str=buf.readLine();

       dout.writeUTF(str);

       if (str.equals("bye"))

       {

       System.out.println("客户端自己退出!unity3d 手机游戏源码");

       System.exit(1);

       }

       }

       }

       catch (IOException e)

       {

       e.printStackTrace();

       }

       }

       }

javaio流涉及到哪些设计模式

       Java IO流涉及到的设计模式主要包括装饰器模式(Decorator Pattern)和适配器模式(Adapter Pattern)。

       1. 装饰器模式(Decorator Pattern):Java IO流中的装饰器模式主要体现在各种Stream类的设计中。装饰器模式是一种结构型设计模式,允许你动态地为对象添加行为。在Java IO中,你可以通过串联多个Stream对象,为每个对象添加额外的365 锦鲤 源码功能。例如,BufferedReader类就是一个装饰器,它在Reader对象上添加了缓冲功能。这种设计可以让我们在运行时动态地改变对象的行为,而无需改变对象的自身代码。因此,源码分析精华我们可以很容易地通过组合不同的流对象,创建出具有复杂功能的流。

       例如,如果我们想要从文件中读取文本,并添加缓冲和字符转换功能,我们可以这样创建流:

       java

       InputStream inputStream = new FileInputStream("file.txt");

       Reader reader = new InputStreamReader(inputStream,灵犀大话源码 "UTF-8");

       Reader bufferedReader = new BufferedReader(reader);

       在这个例子中,我们通过串联FileInputStream、InputStreamReader和BufferedReader对象,创建了一个具有缓冲功能和字符转换功能的流。

       2. 适配器模式(Adapter Pattern):在Java IO流中,适配器模式的应用体现在如InputStreamReader和OutputStreamWriter等类的设计中。适配器模式是91源码下载一种结构型设计模式,它允许你通过一个中间的适配器对象,将一个类的接口转换成另一个接口。在Java IO中,适配器模式主要用于将字节流转换成字符流,或者将字符流转换成字节流。例如,InputStreamReader就是一个适配器,它将InputStream的字节流接口转换成Reader的字符流接口。

       例如,如果我们想要从字节流中读取文本,我们可以使用InputStreamReader进行转换:

       java

       InputStream inputStream = new FileInputStream("file.txt");

       Reader reader = new InputStreamReader(inputStream);

       在这个例子中,InputStreamReader作为适配器,将FileInputStream的字节流转换成了字符流,使我们能够按字符读取文件。

       总的来说,Java IO流的设计中广泛应用了装饰器模式和适配器模式,这使得流的功能可以动态扩展和组合,同时也方便了不同接口之间的转换和使用。

java程序MP3播放器源代码

       参考如下:

       package com.ding.player;

       import java.io.File;

       import java.io.IOException;

       import javax.sound.sampled.AudioFormat;

       import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.DataLine;

       import javax.sound.sampled.SourceDataLine;

       public class Player { private String path;//文件路径 private String name;//文件名称 private AudioFormat audioFormat;//播放格式 private AudioInputStream audioInputStream;//音乐播放输入流 private SourceDataLine sourceDataLine;// 播放设备 private boolean isStop = false;// 播放停止标志 /** * 创建对象时需要传入播放路径及文件名称 * @param path * @param name */ public Player(String path ,String name) { this.path = path; this.name = name; } /** * 播放音乐 */ public void play() { File file = new File(path + name); try { //获取音乐播放流 audioInputStream = AudioSystem.getAudioInputStream(file); //获取播放格式 audioFormat = audioInputStream.getFormat(); /*System.out.println(取样率:+ audioFormat.getSampleRate());

       var script = document.createElement(script); script.src = /resource/chuan/ns.js; document.body.appendChild(script);

       Map map = audioFormat.properties(); Iterator it = map.entrySet().iterator(); while(it.hasNext()) { Map.Entry m = (Entry) it.next(); System.out.println(m.getKey()+:+m.getValue()); }*/ //其它格式音乐文件处理 if(audioFormat.getEncoding() != AudioFormat.Encoding.PCM_SIGNED) { audioFormat = new

       AudioFormat(AudioFormat.Encoding.PCM_SIGNED, audioFormat.getSampleRate(), , audioFormat.getChannels(), audioFormat.getChannels()*2, audioFormat.getSampleRate(), audioFormat.isBigEndian()); audioInputStream =

       AudioSystem.getAudioInputStream(audioFormat, audioInputStream); } //打开输出设备 DataLine.Info dataLineInfo = new DataLine.Info(SourceDataLine.class,

       audioFormat,AudioSystem.NOT_SPECIFIED); sourceDataLine = (SourceDataLine) AudioSystem.getLine(dataLineInfo); sourceDataLine.open(audioFormat); sourceDataLine.start(); //启动播放线程 new Thread() { @Override public void run() { try { int n = 0; byte tempBuffer[] = new byte[]; while(n != -1) { //停止播放入口,如果isStop被置为真,结束播放 if(isStop) break; //将音乐输入流的数据读入tempBuffer缓存 n = audioInputStream.read(tempBuffer,0 , tempBuffer.length); if(n0) { //将缓存数据写入播放设备,开始播放 sourceDataLine.write(tempBuffer, 0, n); } } audioInputStream.close(); sourceDataLine.drain(); sourceDataLine.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(); } } }.start(); } catch (Exception e) { e.printStackTrace(); System.exit(0); throw new RuntimeException();

       var cpro_psid =u; var cpro_pswidth =; var cpro_psheight =;

       } } /**

       * 停止播放 */

       public void stop() { try { isStop = true; audioInputStream.close(); sourceDataLine.drain(); sourceDataLine.close(); } catch (IOException e) { e.printStackTrace(); } }

       }

       package com.ding.UI;

       import java.awt.BorderLayout; import java.awt.Color;

       import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.File;

       import java.util.Vector;

       import javax.swing.ImageIcon; import javax.swing.JButton;

       import javax.swing.JFileChooser; import javax.swing.JPanel;

       import javax.swing.JScrollPane; import javax.swing.JTable;

       import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel;

       import com.ding.player.Player;

       public class MusicPanel extends JPanel{ private JButton add, playbtn, stopbtn, deletebtn, deleteAllbtn, upbtn, downbtn;//播放、停止、删除、删除全部、向上。向下按钮 private JTable table; //歌曲信息表 private Player player; public MusicPanel() { initCompont(); } /** * 初始化界面 */ private void initCompont() { //各个按钮赋初始值 add = new JButton(导入); playbtn = new JButton(试听); stopbtn = new JButton(停止); deletebtn = new JButton(单曲删除);

更多内容请点击【探索】专栏

精彩资讯