下载 >  开发技术 >  C > 可群发,冒号加客户号可指定用户发送的java聊天程序

可群发,冒号加客户号可指定用户发送的java聊天程序

2009-06-13 上传大小:11KB
自己写的个java聊天
import java.io.*;
import java.net.*;
import java.util.ArrayList;
import java.util.List;


public class ChatServer {
	
	public static int id;
	private ServerSocket server;
	private List<Connection> connections;
	InetAddress localAddress;


	public static void main(String[] args){
		
		new ChatServer().startServer();
		
	}
	
	private void startServer(){
		
		boolean started = false;
		
		try {
			connections = new ArrayList<Connection>();
			server = new ServerSocket(8888);
			localAddress = InetAddress.get
                            LocalHost();
			started = true;
			System.out.println("服务器已启动..正在监听.../服务器ip: " + localAddress);
		} catch (IOException e) {
			System.out.println("服务器启动失败!请关闭服务器,重新启动");
			System.exit(0);
		}
		
		
		while(started){
		    try {
				Socket connection = server.accept();
				System.out.println("来自" + connection.getInetAddress() + "已建立:" );
				Connection c = new Connection(connection);
				connections.add(c);
				new Thread(c).start();
				
				
				
			} catch (IOException e) {
				System.out.println("客户端连接出错");
			}
		}
	}
	
	
	class Connection implements Runnable{
		
		
		private Socket connection;
		private ObjectInputStream inputS;
		private ObjectOutputStream outputS;
		private boolean beConnected = false;
		private int id;
		
		
		public Connection(Socket connection){
			this.connection = connection;
			this.id = ChatServer.id++;
			 try {
				inputS = new ObjectInputStream(connection.getInputStream());
				outputS = new ObjectOutputStream(connection.getOutputStream());
				beConnected = true;
			} catch (IOException e) {
				System.out.println("无法获取连接的输入输出流");
			}
			
		}
	   
	    
	    
	    public void run(){
	    	try {
	    		outputS.writeObject("已连接到服务器:"+connection.getInetAddress());
	    		outputS.writeObject("服务器:您的客户id为 :" + id + "\t" + " 输入BYE退出聊天");
	    		while(true){
				String inLine = (String) inputS.readObject();
				
				//System.out.println(inLine);
				ObjectOutputStream output;
				if(inLine.charAt(0)==':'&&inLine.length()>0){
					
					int i =0; 
					int index = Integer.parseInt(inLine.substring(1,2));
					
					for(i = 0;i<connections.size();i++){
						Connection c = connections.get(i);
						if(c.id==index){
							break;
						}
					}
					String inout = inLine.substring(2);
					Connection c = connections.get(i);
					output = c.outputS;
					output.writeObject("Client " + id + ": " + inout);
					output.flush();
					
				}else{
					for(int i = 0;i<connections.size();i++){
						Connection c = connections.get(i);
						output = c.outputS;
						output.writeObject("Client " + id + ": " + inLine);
						output.flush();
						if(inLine.toUpperCase().equals("BYE")){
							outputS.writeObject("服务器:你已和服务器断开连接");
							this.inputS.close();
							this.outputS.close();
							this.connection.close();
							connections.remove(this);
						}
						
					}
					
				}
				
				
	    		}
			} catch (IOException e) {
				System.out.println("客户已退出连接");
				connections.remove(this);
			} catch (ClassNotFoundException e) {
				e.printStackTrace();
			}
			finally{
				try {
					inputS.close();
					connection.close();
				} catch (IOException e) {
					System.out.println("关闭连接错误");
				}
			}
	    }
	    
	    
	}
	
	
	
	
}                        
...展开收缩
综合评分:0
开通VIP 立即下载

评论共有0条

 
matlab中冒号的使用 立即下载
积分/C币:3
冒号课堂 完整版 立即下载
积分/C币:3
冒号课堂 完整 PDF版 立即下载
积分/C币:18
WordPress 中冒号、endif、endwhile、endfor是什么? 立即下载
积分/C币:0
冒号课堂——编程范式与OOP思想(带书签完整版) 立即下载
积分/C币:10
冒号课堂——编程范式与OOP思想 立即下载
积分/C币:3
冒号课堂-编程范式与OOP思想 立即下载
积分/C币:3
冒号和他的学生们 立即下载
积分/C币:3
企业短信群发系统 立即下载
积分/C币:3
冒号课堂:编程范式与OOP思想 PDF 立即下载
积分/C币:3

VIP会员动态

0 1 2
关闭
img

spring mvc+mybatis+mysql+maven+bootstrap 整合实现增删查改简单实例.zip

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
点击完成任务获取下载码
输入下载码
为了良好体验,不建议使用迅雷下载
img

可群发,冒号加客户号可指定用户发送的java聊天程序

会员到期时间: 剩余下载个数: 剩余C币: 剩余积分:0
为了良好体验,不建议使用迅雷下载
VIP下载
您今日下载次数已达上限(为了良好下载体验及使用,每位用户24小时之内最多可下载20个资源)

积分不足!

资源所需积分/C币 当前拥有积分
您可以选择
开通VIP
4000万
程序员的必选
600万
绿色安全资源
现在开通
立省522元
或者
购买C币兑换积分 C币抽奖
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
为了良好体验,不建议使用迅雷下载
确认下载
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 0 0
为了良好体验,不建议使用迅雷下载
开通VIP
img

资源所需积分/C币 当前拥有积分 当前拥有C币
5 4 45
您的积分不足,将扣除 10 C币
为了良好体验,不建议使用迅雷下载
确认下载
下载
无法举报自己的资源

兑换成功

你当前的下载分为234开始下载资源
你还不是VIP会员
开通VIP会员权限,免积分下载
立即开通

你下载资源过于频繁,请输入验证码

您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:webmaster@csdn.net!

举报

若举报审核通过,可返还被扣除的积分

  • 举报人:
  • 被举报人:
  • 举报的资源分:
  • *类型:
  • *详细原因: