亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

我想實現類似QQ聊天的服務器端功能,怎么做呢?

我是搞移動端的,對java了解比較少,但是現在有個項目涉及到聊天功能,剛剛看了這節socket,收獲不少,但是仍然不會實現聊天功能的服務器端的功能。求大家幫助。能發份代碼或者怎么的么?謝謝了 郵箱:([email protected]

正在回答

5 回答

好厲害


0 回復 有任何疑惑可以回復我~

可以嘗試使用集合操作,之前我做過這東西,就是沒寫圖形界面

0 回復 有任何疑惑可以回復我~

這個好像只能在服務端跟客服端之間通信,不能在客戶端跟客戶端通信

1 回復 有任何疑惑可以回復我~
#1

SoyaDokio

兩個問題:1、所謂服務端、客戶端不過是個用以評判工作性質的稱謂罷了;2、所謂的客戶端互通,其實是服務端在中間轉發,而客戶端為了保持獨立性,客戶端之間一般不做鏈接。
2016-08-19 回復 有任何疑惑可以回復我~

好的,多謝了~我把代碼扒下來跑看看。

0 回復 有任何疑惑可以回復我~

老師上課用的代碼,你看看吧,不知道有沒有用



//////////////////////////////////////服務器程序

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;


public class MyServer extends JFrame implements ActionListener {

JTextArea jta;

JTextField jtf;

JButton jb;

JPanel jp;

ServerSocket ss;

Socket socket;

DataOutputStream out;

DataInputStream in;


public MyServer() {

jta = new JTextArea();

jtf = new JTextField(15);

jb = new JButton("發送");

jp = new JPanel();


jp.add(jtf);

jp.add(jb);


JScrollPane jsp = new JScrollPane(jta);

this.add(jsp, BorderLayout.CENTER);

this.add(jp, BorderLayout.SOUTH);


jb.addActionListener(this);

jtf.addActionListener(this);


// 展現

this.setTitle("服務器");

this.setSize(300, 200);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);


// 開放端口

try {

ss = new ServerSocket(9000);

System.out.println("等待連接");

socket = ss.accept();

System.out.println("已連接");


out = new DataOutputStream(socket.getOutputStream());

in = new DataInputStream(socket.getInputStream());

while (true) {

// 接受客戶端發送數據

String str = in.readUTF();

// 顯示多行文本框中

jta.append("客戶端說:" + str + "\r\n");

}

} catch (IOException e) {

e.printStackTrace();

}

}


public static void main(String[] args) {

new MyServer();

}


public void actionPerformed(ActionEvent e) {

if (e.getSource() == jb || e.getSource() == jtf) {

// 向客戶端發送數據

try {

out.writeUTF(jtf.getText());

} catch (IOException e1) {

e1.printStackTrace();

}

// 向多行文本框輸入歷史聊天記錄信息

jta.append("服務器說:" + jtf.getText() + "\r\n");

// 清空單行文本框內容

jtf.setText("");


}

}


///////////////////////////////////////////////////客戶端程序


import java.awt.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

import javax.swing.*;


//客戶端程序

public class MyClient extends JFrame implements ActionListener {

JButton jb;

JTextArea jta;

JTextField jtf;

JPanel jp;

Socket socket;

DataOutputStream out;

DataInputStream in;


public MyClient() {

jta = new JTextArea();

jtf = new JTextField(15);

jb = new JButton("發送");

jp = new JPanel();


jp.add(jtf);

jp.add(jb);


JScrollPane jsp = new JScrollPane(jta);

this.add(jsp, BorderLayout.CENTER);

this.add(jp, BorderLayout.SOUTH);


jb.addActionListener(this);

jtf.addActionListener(this);


// 展現

this.setTitle("客戶端");

this.setSize(300, 200);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);


try {

// 建立連接

socket = new Socket("127.0.0.1", 9000);

out = new DataOutputStream(socket.getOutputStream());

in = new DataInputStream(socket.getInputStream());


while (true) {

// 接受服務器發送數據

String str = in.readUTF();

// 顯示在多行文本框

jta.append("服務器說:" + str + "\r\n");

}


} catch (UnknownHostException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}


public static void main(String[] args) {

new MyClient();

}


public void actionPerformed(ActionEvent e) {

if (e.getSource() == jb || e.getSource() == jtf) {

// 向服務器發送數據

try {

out.writeUTF(jtf.getText());

} catch (IOException e1) {

e1.printStackTrace();

}


// 顯示在多行文本框

jta.append("客戶端說:" + jtf.getText() + "\r\n");

// 清空單行文本框

jtf.setText("");

}

}

}


1 回復 有任何疑惑可以回復我~
#1

小豬洋 提問者

好的,多謝了~我把代碼扒下來跑看看。
2014-12-23 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

我想實現類似QQ聊天的服務器端功能,怎么做呢?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號