❶ android消息推送GCM、XMPP、MQTT三種方案的優劣,越仔細越好,有具體分析更好!
android消息推送GCM、XMPP、MQTT三種方案的優劣:❷ java.編寫雙人聊天程序和多人聊天室的區別在哪裡
雙人聊鉛團塵天,可以採用兩槐禪人之間建立socket連接的方式。多人的話。必須連或雀接伺服器。並定時從伺服器取得他人發送的信息。
❸ 如何用Java編寫一個聊天室程序,可以支持單聊和多聊
聊天程序又叫即時通訊系統
分類兩部分:客戶端和服務端
客戶端:用戶聊天的界面專
服務端:接收消屬息並轉發到指定用戶
其中服務端和客戶端用tcp或者udp連接,使用socket編程完成通信。
按著這個思路可以開發出一套聊天程序
客戶端常用界面 bs版本的又layim
服務端 openfire或者自己實現
❹ 用java實現多人的語音聊天,大概要用到哪些方面的東西呢 關鍵是怎麼實現多人
要用到多抄線程、socket通信、JMF多媒體框架,想做的好,還要考慮設計模式。
多人的實現,就是多個客戶端連接伺服器而已(就像很多人連接網游伺服器打游戲一樣),當有語音數據時,廣播發給相關的客戶端接收者。
❺ 如何用java做一個聊天小程序 要求使用圖形用戶界面,可以實現一個聊天室中多人聊天,也可以兩人私聊,
給你一個簡單的實現吧,注意一定要先運行MyServer.java
//MyCilent.java
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyClient extends JFrame implements ActionListener{
JTextField tf;
JTextArea tx;
JButton bt;
PrintWriter out;
public MyClient(){
tf=new JTextField(20);
tx=new JTextArea();
tx.setLineWrap(true);
tx.setWrapStyleWord(true);
JPanel pan=new JPanel();
jscrollPane jsp=new JScrollPane(tx);
add(jsp,"Center");
bt=new JButton("SEND");
bt.addActionListener(this);
pan.add(tf);
pan.add(bt);
add(pan,"South");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setTitle("THE CLIENT");
setSize(400,300);
setVisible(true);
try{
Socket socket=new Socket("127.0.0.1",1680);
out=new PrintWriter(socket.getOutputStream(),true);
InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader sin=new BufferedReader(in);
String s;
while(true){
s=sin.readLine();
tx.append("#Server Said#: "+s+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt){
tx.append("@Client Said@: "+tf.getText()+"\n");
out.println(tf.getText());
tf.setText("");
}
}
public static void main(String[] args){
MyClient mct = new MyClient();
}
}
//MyServer.java
import java.io.*;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class MyServer extends JFrame implements ActionListener{
JTextField tf;
JTextArea tx;
JButton bt;
JScrollPane jsp;
JPanel pan;
PrintWriter out;
public MyServer(){
tx=new JTextArea();
tx.setLineWrap(true);
tx.setWrapStyleWord(true);
jsp=new JScrollPane(tx);
tf=new JTextField(20);
bt=new JButton("SEND");
bt.addActionListener(this);
pan=new JPanel();
pan.add(tf);
pan.add(bt);
add(pan,"South");
add(jsp,"Center");
this.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
setTitle("THE SERVER");
setSize(400,300);
setVisible(true);
try{
ServerSocket server = new ServerSocket(1680);
Socket socket = server.accept();
InputStreamReader in = new InputStreamReader(socket.getInputStream());
BufferedReader sin=new BufferedReader(in);
out=new PrintWriter(socket.getOutputStream(),true);
while(true){
String s=sin.readLine();
tx.append("@Client Said@: "+s+"\n");
}
}catch(Exception e){
e.printStackTrace();
}
}
public void actionPerformed(ActionEvent e){
if(e.getSource()==bt){
String st = tf.getText();
tx.append("#Server Said#: "+st+"\n");
out.println(st);
tf.setText("");
}
}
public static void main(String[] args){
MyServer msr = new MyServer();
}
}
❻ 用java編寫一個多人聊天室可以 實現私聊,群聊,文件傳送的功能
你這就整麻煩了,如果你只是想實現這些功能,不要求速度也不要存儲空間,也不要求有界面那還比較簡單,實體類序列化所有傳送對象,在socket類中用object流直接傳和接收所有的東西(包括聊天信息和文件)再用多線程實現群聊.大概兩三天可以搞定.
如果你像做得類似於QQ一樣,那就不是幾天的事情了
❼ 求解,JAVA語言多人語音聊天怎麼解決混音問
兩路音視頻流,符合以下條件才能混合:
格式相同,要解壓成 PCM 格式。回
采樣答率相同,要轉換成相同的采樣率。主流采樣率包括:16k Hz、32k Hz、44.1k Hz 和 48k Hz。
幀長相同,幀長由編碼格式決定,PCM 沒有幀長的概念,開發者自行決定幀長。為了和主流音頻編碼格式的幀長保持一致,推薦採用 20ms 為幀長。
位深(Bit-Depth)或采樣格式 (Sample Format) 相同,承載每個采樣點數據的 bit 數目要相同。
聲道數相同,必須同樣是單聲道或者雙聲道 (立體聲)。這樣,把格式、采樣率、幀長、位深和聲道數對齊了以後,兩個音頻流就可以混合了。
JAVA代碼問題可以到即構開發者中心看看
❽ java多人聊天一般都是怎麼搭建的
Java多人聊天可以使用Java的Socket編程實現,主要的思路是:使用伺服器來維護所有客戶端的連接,並將客戶端之間的聊天信息進行轉發。巧稿歲
具體的實現步驟如下:
創建伺服器端:使用ServerSocket類創建一個伺服器端,並監聽指定的埠,等待客戶端的連接。
創建客戶端:使用Socket類創建一個客戶端,並連接到伺服器端。
實現聊天功能:客戶端和伺服器端之間可以通過輸入和輸出流進行通信,客戶端將聊天信息發送給伺服器,伺服器再將其轉發給其他客戶端。
處理異常:在實現聊天功能時,需要注意處理可能出現的異常,例如連接異常、孝睜輸入輸出異常等等。
一個簡單的Java多人聊天程序的代碼框架如下:
伺服器端:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
public class ChatServer {
private ServerSocket serverSocket;
private ArrayList<ClientHandler> clients;
public ChatServer(int port) throws IOException {
serverSocket = new ServerSocket(port);
clients = new ArrayList<ClientHandler>();
System.out.println("伺服器已啟動,等敬差待客戶端連接...");
}
public void start() throws IOException {
while (true) {
Socket socket = serverSocket.accept();
ClientHandler client = new ClientHandler(socket, this);
clients.add(client);
client.start();
}
}
public void broadcast(String message) {
for (ClientHandler client : clients) {
client.sendMessage(message);
}
}
public void removeClient(ClientHandler client) {
clients.remove(client);
}
public static void main(String[] args) throws IOException {
ChatServer server = new ChatServer(12345);
server.start();
}
}
客戶端:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class ChatClient {
private Socket socket;
private BufferedReader reader;
private PrintWriter writer;
private String name;
public ChatClient(String serverAddress, int port, String name) throws IOException {
socket = new Socket(serverAddress, port);
reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
writer = new PrintWriter(socket.getOutputStream(), true);
this.name = name;
}
public void start() throws IOException {
System.out.println("歡迎來到聊天室!");
new Thread(new IncomingMessageHandler()).start();
new Thread(new OutgoingMessageHandler()).start();
}
private class IncomingMessageHandler implements Runnable {
@Override
public void run() {
try {
while (true) {
String message = reader.readLine();
if (message == null) {
break;
}
System.out.println(message);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
close();
}
}
}
private class OutgoingMessageHandler implements Runnable {
@Override
public void run() {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
try {
while (true) {
String message = reader.readLine();
if (message.equals("quit")) {
break;
}
writer.println(name + ": " + message);
}
} catch (IOException e) {
e.printStackTrace;
} finally {
close();
}
}
}