第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

空指針異常問題

//服務(wù)器端
package?chatroom;

import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.io.PrintStream;
import?java.net.ServerSocket;
import?java.net.Socket;
import?java.util.HashMap;

public?class?ChatServer?{
	private?static?HashMap<String,?Socket>?users?=?new?HashMap<String,?Socket>();

	public?static?void?addClient(String?addr,?Socket?socket)?{
		users.put(addr,?socket);
	}

	public?static?Socket?getClient(String?addr)?{
		return?users.get(addr);
	}

	public?static?HashMap<String,?Socket>?getUsers()?{
		return?users;
	}

	public?static?void?main(String[]?args)?{
		new?ChatServer().startServer();
	}

	public?void?startServer()?{
		try?{
			ServerSocket?s?=?new?ServerSocket(9000);
			System.out.println("服務(wù)器已經(jīng)開啟");
			while?(true)?{
				Socket?socket?=?s.accept();
				String?addr?=?socket.getInetAddress().getHostAddress();
				System.out.println("接收到"?+?addr?+?"的訪問");
				ChatServer.addClient(addr,?socket);
				new?Service(socket);
			}
		}?catch?(Exception?e)?{
			e.printStackTrace();
		}
	}
}

class?Service?extends?Thread?{
	private?Socket?socket;
	private?BufferedReader?br;
	private?String?addr;

	public?Service(Socket?socket)?{
		super();
		this.socket?=?socket;
		try?{
			BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(
					socket.getInputStream()));
		}?catch?(IOException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
		this.addr?=?socket.getInetAddress().getHostAddress();
		this.start();
	}

	public?boolean?check()?throws?IOException?{
		String?str?=?br.readLine();
		if?(str?==?null?||?str.equals(""))?{
			br.readLine();
		}
		String?ip?=?str.split("/")[0];
		Socket?clientSocket?=?ChatServer.getClient(ip);
		if?(clientSocket?==?null)?{
			return?true;
		}?else?{
			return?false;
		}
	}

	@Override
	public?void?run()?{
		try?{
			while?(true)?{
				String?str?=?br.readLine();
				if?(str?==?null?||?"".equals(str))continue;
				if?("exit".equals(str))?{
					System.out.println("有程序退出");
				}
				int?index?=?str.indexOf("/");
				if?(index?==?-1)?{//?群聊--->遍歷所有的socket進行寫操作
					for?(String?ip?:?ChatServer.getUsers().keySet())?{
						Socket?clientSocket?=?ChatServer.getUsers().get(ip);
						PrintStream?toAll?=?new?PrintStream(
								clientSocket.getOutputStream(),?true);
						toAll.println(str);
					}
				}?else?if?(this.check())?{
					PrintStream?ps?=?new?PrintStream(socket.getOutputStream());
					ps.println("您要發(fā)送的客戶端不存在");
				}?else?{//?私聊
					String?ip?=?str.split("/")[0];
					String?content?=?str.split("/")[1];
					String?text?=?this.addr?+?content;//?最后要發(fā)送的信息,開頭得是發(fā)送者
					Socket?clientSocket?=?ChatServer.getClient(ip);
					if?(clientSocket?==?null)?{
						PrintStream?returns?=?new?PrintStream(
								socket.getOutputStream());
						returns.println("您要發(fā)送的客戶端不存在");
					}
					PrintStream?clientToClient?=?new?PrintStream(
							clientSocket.getOutputStream(),?true);
					clientToClient.println(text);
				}
			}
		}?catch?(Exception?e)?{
			e.printStackTrace();
		}
	}
}


//客戶端
package?chatroom;

import?java.io.BufferedReader;
import?java.io.IOException;
import?java.io.InputStreamReader;
import?java.io.PrintWriter;
import?java.net.Socket;

public?class?ChatClient?{
	public?static?void?main(String[]?args)?{
		new?ChatClient().starCliant();
	}
	public?void?starCliant(){
		try?{
			Socket?socket?=?new?Socket("127.0.0.1",9000);
			new?AcceptData(socket);
			BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(System.in));
			PrintWriter?out?=?new?PrintWriter(socket.getOutputStream(),true);?
			while(true){
				String?str?=?br.readLine();
				if("exit".equals("str"))break;
				out.println(str);
			}socket.close();
		}?catch?(Exception?e)?{
			e.printStackTrace();
		}
	}
}

class?AcceptData?extends?Thread?{
	private?Socket?socket;
	private?BufferedReader?br;

	public?AcceptData(Socket?socket)?{
		this.socket?=?socket;
		try?{
			BufferedReader?br?=?new?BufferedReader(new?InputStreamReader(
					socket.getInputStream()));
		}?catch?(IOException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
		this.start();
	}

	@Override
	public?void?run()?{
		try?{
			while?(true)?{
				String?str?=?br.readLine();
				if(str==null||"".equals(str))continue;
				if("exit".equals(str)){
					System.out.println("有客戶端退出");
				}
				int?index?=?str.indexOf("/");
				if(index==-1){//說明是群聊
					System.out.println("群聊的內(nèi)容為"+str);
				}else{//私聊的內(nèi)容
					String[]?ss?=?str.split("/");
					System.out.println(ss[0]+"對你說"+ss[1]);
				}
			}
		}?catch?(IOException?e)?{
			//?TODO?Auto-generated?catch?block
			e.printStackTrace();
		}
	}
}

一個用IO做的簡易聊天室,為什么做了判斷還是報空指針異常?

58a1a2100001870605000041.jpg

58a1a2100001ee4705000085.jpg


正在回答

1 回答

58a2705300012b6005000135.jpg

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

58a270540001d06105000183.jpg

客戶端同樣方式修改。。。

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

_Everglow 提問者

謝謝了..
2017-02-14 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

空指針異常問題

我要回答 關(guān)注問題
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號