android聊天器(仿QQ)编写第二天__服务器的搭建
2016-04-17 16:34
549 查看
界面布局已经实现,现在开始搭建java服务器
Java服务器代码为:
上面代码中的注释已经够清楚了,我也就不在重复了。
服务器线程(接收消息和转发消息):其中,消息的转发回转发给所有人包括,发送者,所有有追求的可以自行去完善,我是为了测试,并没有实现不转发给发送者。。。望理解。
代码为(简单啊):
上面的代码注意分号哈,由于我下面的判断逻辑代码较多,结束的分号我并没有复制,自行去完善。。。
好了,服务器的搭建完成。。。好少的感觉哈。
服务器运行的效果图为
ps:服务器搭建没什么难点,要实现其他的功能,则要添加逻辑判断,如私聊或者其他。上期的布局地址是:http://blog.csdn.net/mn827748115/article/details/51173753
Java服务器代码为:
package ChartRoom; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; /** * 聊天室的服务器--装载多个客户端的Socket请求,转发每个人说的话 */ public class Server { public static void main(String[] args) { try { // 建立端口 //map存放昵称和socket对象 Map<String,Socket>map=new HashMap<>(); ServerSocket ss = new ServerSocket(8868); System.out.println("服务器已打开,现在开始接受连接!"); // 准备一个同步安全的结合来承载所有连接到的客户端socket对象 List<Socket> list = Collections .synchronizedList(new ArrayList<Socket>()); // 循环接受某个客户端的请求,并加入list while (true) { Socket soc = ss.accept(); System.out.println("客户端" +soc.getInetAddress().getHostAddress()+ "已连接,进入聊天室"); list.add(soc); // 在循环中,要不停的e为每个客户端开一个线程,用于接受该客户端的发送的消息,并转发给其他客户端 ServerThread st = new ServerThread(soc, list,map); st.start(); } } catch (IOException e) { System.out.println("聊天室服务器异常"); e.printStackTrace(); } } }
上面代码中的注释已经够清楚了,我也就不在重复了。
服务器线程(接收消息和转发消息):其中,消息的转发回转发给所有人包括,发送者,所有有追求的可以自行去完善,我是为了测试,并没有实现不转发给发送者。。。望理解。
代码为(简单啊):
public class ServerThread extends Thread{ //每个客户端连接的socket private Socket soc; private List<Socket>list; private Map<String,Socket>map; private Calendar ca; private boolean flag=false; public ServerThread(Socket soc, List<Socket> list,Map<String,Socket> map) { this.soc = soc; this.list = list; this.map=map; } @Override public void run() { try{ BufferedReader bf= new BufferedReader(new InputStreamReader(soc.getInputStream(), "GBK")); while(true){ //接受当前客户端发送的消息 String words=bf.readLine(); if(words!=null){ System.out.println(words); for(Socket s:list){ PrintWriter pw=new PrintWriter(new OutputStreamWriter(s.getOutputStream(), "GBK"),true); ca=Calendar.getInstance(); String str = (new SimpleDateFormat("HH:mm")).format(ca .getTime()); pw.println("fwqsent"+words); //pw.println(words); pw.flush(); System.out.println("服务器转发成功"+s.getInetAddress().getHostAddress()); } }
上面的代码注意分号哈,由于我下面的判断逻辑代码较多,结束的分号我并没有复制,自行去完善。。。
好了,服务器的搭建完成。。。好少的感觉哈。
服务器运行的效果图为
ps:服务器搭建没什么难点,要实现其他的功能,则要添加逻辑判断,如私聊或者其他。上期的布局地址是:http://blog.csdn.net/mn827748115/article/details/51173753
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 小心服务器内存居高不下的元凶--WebAPI服务
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- 运维入门
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序