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集群怎么实现
网站URL:https://www.cdcxhl.com/article20/ddeejjo.html

成都网站建设公司_创新互联,为您提供云服务器定制网站营销型网站建设网站设计网站营销商城网站

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

成都app开发公司