成都网站建设设计

将想法与焦点和您一起共享

java代码实现群链接 java集群怎么实现

java程序如何连接Mysql集群?

mysql集群是master-slaver模式,java程序当然是链接master那台机器了,slaver只是给master做辅助的。

成都创新互联是一家专注于做网站、网站建设与策划设计,凌云网站建设哪家好?成都创新互联做网站,专注于网站建设十载,网设计领域的专业建站公司;建站业务涵盖:凌云等地区。凌云做网站价格咨询:18982081108

java群聊功能是怎么实现的?

直接用socket和servsocket开发。命令行形式,改造成可视化的话,需要拆分功能。懒。

主要思路:

客户端 连接到服务 获取输入输出流。分别用2个线程处理输入流和输出流。

服务端 使用Set集合保存socket信息。同时使用线程安全Queue保存接收到的message。使用一个线程处理输入流,并将接到的封装成一个Message对象放到Queue中,对象保存连接的socket信息。另开一个线程用于从Queue获取消息,然后分发消息到Set中socket。

只是一个粗糙的即时聊天室。无缓冲功能。新用户加入进来不能获取以前的消息。只能获取加入后的其他人再发送的消息。

像这样:服务端测试:message中socket标识消息来源。

使用三个客户端测试:

java 实现群聊和 私聊 群聊会实现 但是私聊?

服务器 端 使用个链表把在线用户账号和他对应的链接保存起来。例如 soket。

之后 定义一个协议,

在 客户端发出来的 聊天信息前面添加一个头。

例如,1表示群聊,2表示私聊,3表示添加好友,等等。每一个行为对应一个编码超过10个可以使用字母。

群聊的话,没什么好说,每个人发一个;

私聊,那么接下来的一个字符可以表示,私聊对象的账户名 的长度,比如 tom的 长度就是3,

之后,根据长度,截取 第3到第5个字符,截取到 此次 私聊信息是发送给 tom 的。

这条发送给服务器,希望他转发给tom的 消息就应该是

"23tom你好!"

之后去链表里面找tom 的soket 链接。打开他的 输出流,给他传送 聊天信息。

欢迎追问。

java网络五子棋群聊是怎么实现的??急!!!yc_wzl@163点抗

一楼的思路是正确的,我给你代码参考!

GroupChat_Server.java

--------------------------------------------------------------------------

import java.io.DataInputStream;

import java.io.DataOutputStream;

import java.io.IOException;

import java点虐 .ServerSocket;

import java点虐 .Socket;

import java.util.ArrayList;

import javax.swing.JOptionPane;

public class GroupChat_Server {

static DataOutputStream dataouts;

static int count = 0;

//创建一个集合类的数组,存放客户端的对象

public static ArrayListSocket socketList = new ArrayListSocket();

public static void main(String[] args) {

try {

ServerSocket server = new ServerSocket(3999);//开设服务器端口3999

JOptionPane.showMessageDialog(null, "服务器启动成功");

while (true) {

Socket s = server.accept();//等待客户端的连接

dataouts = new DataOutputStream(s.getOutputStream());

count++;

dataouts.writeUTF("Connection successful,Welcome! "+s.toString()+" The "+count+" Client.");

socketList.add(s);//把连接成功的Socket对象存进数组

new Thread(new ServerThread(s)).start();//为每个客户端创建一个进程

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

class ServerThread implements Runnable {

Socket s = null;

DataInputStream datain = null;

public ServerThread(Socket s) {

this.s = s;

try {

datain = new DataInputStream(s.getInputStream());//获取客户端发来的数据

} catch (IOException e) {

e.printStackTrace();

}

}

public void run() {

try {

String content = null;

while ((content = readFromClient()) != null) {

for (Socket s : GroupChat_Server.socketList) {//遍历数组

DataOutputStream dataout = new DataOutputStream(

s.getOutputStream());

dataout.writeUTF(content);

dataout.flush();//将缓冲区的数据全部输出!

}

}

} catch (IOException e) {

e.printStackTrace();

}

}

private String readFromClient() {//封装客户端发来的数据

try{

return datain.readUTF();

}catch(IOException e){

GroupChat_Server.socketList.remove(s);

}

return null;

}

}

--------------------------------------------------------------------------

GroupChat_Client.java

import javax.swing.*;

import javax.swing.border.TitledBorder;

import java.awt.BorderLayout;

import java.awt.Container;

import java.awt.FlowLayout;

import java.awt.GridLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.*;

import java点虐 .BindException;

import java点虐 .Socket;

import java点虐 .SocketException;

@SuppressWarnings("serial")

public class GroupChat_Client extends JFrame {

JPanel p1, p2, p3, p4;

JTextArea Txt, SentTxt;

JTextField name;

JButton connection, submit, accept;

TitledBorder title, border;

JLabel conMessage;

DataOutputStream dataout;

DataInputStream datain;

ClientThread ct;

public GroupChat_Client() {

super("---Chat Client---");

setLayout(new BorderLayout());

p1 = new JPanel();

p2 = new JPanel();

p3 = new JPanel();

p4 = new JPanel();

Container frame = getContentPane();

Txt = new JTextArea(16, 50);

JScrollPane getText = new JScrollPane(Txt);

Txt.setEditable(false);

p1.add(getText);

SentTxt = new JTextArea(3, 36);

JScrollPane SentText = new JScrollPane(SentTxt);

connection = new JButton("Connection");

submit = new JButton(" Sent ");

p2.setLayout(new BorderLayout());

p2.add(connection, "West");

p4.setLayout(new FlowLayout(0));

p4.add(new JLabel("Message:"));

p4.add(SentText);

p2.add(p4);

p2.add(submit, "East");

p3.setLayout(new GridLayout(4, 1));

conMessage = new JLabel(

"htmlbodyp服务器还没有启动!/p br p请启动服务器.../pbody/html",

0);

name = new JTextField();

name.setText("客户端["+GroupChat_Server.count+"]");

p3.add(new JLabel(" 欢迎使用,请设置呢称: ", 0));

p3.add(name);

p3.add(conMessage);

p3.add(new JLabel(

"htmlbody--DESIGN BY:LiXiaoFei-- br --CopyRight 2012--body/html",

0));

title = new TitledBorder("消息框");

border = new TitledBorder("");

p1.setBorder(title);

p2.setBorder(border);

p3.setBorder(new TitledBorder("状态栏"));

frame.add(p1);

frame.add(p2, "South");

frame.add(p3, "East");

setSize(750, 450);

setLocationRelativeTo(getOwner());

setResizable(false);

setVisible(true);

setDefaultCloseOperation(EXIT_ON_CLOSE);

// 事件监听

connection.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

ct = new ClientThread(GroupChat_Client.this);

GroupChat_Client.this.setClient(ct);

}

});

submit.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

try {

ct.Sent();

} catch (NullPointerException e1) {

JOptionPane.showMessageDialog(null, "还没有连接服务器!");

}

}

});

}

public void setClient(ClientThread ct) {

this.ct = ct;

}

public static void main(String[] args) {

new GroupChat_Client();

}

}

class ClientThread extends Thread {

Socket connection;

DataOutputStream dataout;

DataInputStream datain;

GroupChat_Client k;

public ClientThread(GroupChat_Client k) {

this.k = k;

try {

connection = new Socket("127.0.0.1", 3999);

k.conMessage.setText("与服务器连接成功...");

dataout = new DataOutputStream(connection.getOutputStream());

datain = new DataInputStream(connection.getInputStream());

} catch (BindException e) {

JOptionPane.showMessageDialog(null, "已连接!");

} catch (IOException e) {

}

start();

}

public void run() {

String msg = null;

while (true) {

try {

msg = datain.readUTF();

} catch (SocketException e) {

JOptionPane.showMessageDialog(null, "连接断开!");

break;

} catch (IOException e) {

e.printStackTrace();

}

if (msg != "" msg.trim() != "") {

k.Txt.append(msg + "\n");

}

}

}

void Sent() {

try {

if (k.SentTxt.getText().equals("")) {

JOptionPane.showMessageDialog(null, "请输入信息!");

} else {

dataout.writeUTF(k.name.getText()+":" + k.SentTxt.getText());

k.SentTxt.setText("");

}

} catch (IOException e) {

JOptionPane.showMessageDialog(null, "连接失败!");

e.printStackTrace();

} catch (NullPointerException e1) {

JOptionPane.showMessageDialog(null, "连接失败!");

}

}

}


本文名称:java代码实现群链接 java集群怎么实现
链接分享:http://chengdu.cdxwcx.cn/article/ddeejjo.html