java "群发"聊天demo
来源:互联网 发布:软件过程能力 编辑:程序博客网 时间:2024/05/31 06:22
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.List;
/**
* chat server
*
* @author Sam
*
*/
public class Server
{
private List<Client> clients = new ArrayList<Client>();
public static void main(String[] args)
{
Server server = new Server();
server.lauchServer();
}
/**
* to laucher a server
*/
public void lauchServer()
{
ServerSocket server = null;
try
{
server = new ServerSocket(8182);
System.out.println("the server lauch successfull!");
}
catch (IOException e)
{
}
while (true)
{
try
{
Socket socket = server.accept();
Client client = new Client(socket);
client.start();
clients.add(client);
}
catch (Exception ex)
{
}
}
}
private final class Client extends Thread
{
private Socket socket;
private DataInputStream read = null;
private DataOutputStream write = null;
public Client(Socket socket)
{
this.socket = socket;
}
/**
* to send the msg
* @param read
* @throws IOException
*/
private void sendMSG(String msg)throws IOException
{
write.writeUTF(msg);
}
/**
* retrun true if client has still connected the server, or false
* @return
*/
public boolean isConnectedServer()
{
return this.socket.isClosed()?false:true;
}
@Override
public void run()
{
try
{
write = new DataOutputStream(socket.getOutputStream());
while (true)
{
read = new DataInputStream(socket.getInputStream());
String msg = read.readUTF();
for(Client client : clients)
{
if(client.isConnectedServer())
{
client.sendMSG(msg);
}
}
}
}
catch (IOException e)
{
}
finally
{
if(null != socket)
{
try
{
if(null != write)
write.close();
if(null != read)
read.close();
if(null !=socket)
socket.close();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
}
}
}
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import javax.swing.JTextField;
/**
* chat client
* @author Sam
*
*/
public class Client extends JFrame
{
private JTextArea area = new JTextArea();//chat list
private JTextField field = new JTextField();//send sms field
private Socket socket;
private DataOutputStream write;
private DataInputStream read ;
public Client()
{
this.setBounds(500, 200, 300, 300);
this.setTitle("Client");
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
area.setEnabled(false);
area.setBackground(Color.red);
this.add(BorderLayout.CENTER, area);
field.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent arg0)
{
//area.append("say:"+field.getText()+"\n");
try
{
write.writeUTF(field.getText());
}
catch (IOException e)
{
System.out.println("you can not send the message, your client stream was closed!");
}
field.setText("");
}
});
this.add(BorderLayout.SOUTH, field);
}
/**
* to lauch the Client and connect the server
*/
public void lauchClient()
{
this.setVisible(true);
connect();
}
/**
* to connect the server
*/
public void connect()
{
try
{
System.out.println("client is connecting...!");
socket = new Socket("127.0.0.1", 8182);
System.out.println("client connected!");
write = new DataOutputStream(socket.getOutputStream());
read = new DataInputStream(socket.getInputStream());
while(true)
{
String receive = read.readUTF();
area.append(receive+"\n");
}
}
catch (Exception e)
{
System.out.println("error! client socket is closing...");
}
finally
{
if(null !=socket)
{
try
{
write.close();
read.close();
socket.close();
System.out.println("client socket was closed!");
}
catch (IOException e)
{
}
}
}
}
public static void main(String[] args)
{
Client client = new Client();
client.lauchClient();
}
}
- java "群发"聊天demo
- JAVA NIO TCP SOCKET 聊天群发
- java socket聊天小demo
- Demo/在线聊天/Socket/Java
- qq聊天机器人 群发工具 (java版) (一)
- qq聊天机器人 群发工具 (java版) (二)
- qq聊天机器人 群发工具 (java版) (三)
- JAVA NIO TCP SOCKET 聊天群发(并发多线程写消息篇)(支持中文聊天)
- JAVA NIO TCP SOCKET 聊天群发(并发多线程写消息篇)
- java WebSocket实现简单的聊天室(包括群发和点对点聊天)
- 基于Java和websocket的在线聊天程序(可群发和选择用户)
- Java Socket编程Demo-基于TCP的单服务器多客户机群发/私聊系统
- Java-Tcp/Ip-CS控制台聊天应用Demo
- java+html5的websocket简单实现BS聊天DEMO实例
- 【Java学习】基于Socket的多用户聊天Demo
- 视频聊天 Demo
- 视频聊天 Demo
- WebRTC 聊天Demo
- PowerDesigner中如何给字符串字段设置默认值 .
- TortoiseSVN文件夹及文件图标不显示解决方法
- 软件项目开发文档 模板
- 项目开发积累(技术)
- 《linux 内核完全剖析》编译linux 0.12 内核 Ubuntu 64bits 环境
- java "群发"聊天demo
- Android_imageviewChange
- IOS开源APP应用
- [LeetCode] N-Queens
- 自己的抽屉
- udhcp源码详解(三)上 之配置信息的读取
- Reveal代理配置
- 修改ActionMenu的背景色和文字颜色
- 三种方式配置Mac OS X的启动项