当前位置:首页 > 开发 > 编程语言 > 网络编程 > 正文

socket聊天室之服务器搭建

发表于: 2015-04-05   作者:朱辉辉33   来源:转载   浏览:
摘要: 因为我们做的是聊天室,所以会有多个客户端,每个客户端我们用一个线程去实现,通过搭建一个服务器来实现从每个客户端来读取信息和发送信息。    我们先写客户端的线程。 public class ChatSocket extends Thread{ Socket socket; public ChatSocket(Socket socket){ this.sock
因为我们做的是聊天室,所以会有多个客户端,每个客户端我们用一个线程去实现,通过搭建一个服务器来实现从每个客户端来读取信息和发送信息。
   我们先写客户端的线程。
public class ChatSocket extends Thread{
Socket socket;

public ChatSocket(Socket socket){
this.socket = socket;
}
        public void run(){
        }
}
   这是基础部分,但是这个线程还缺少发送信息和读取信息两个核心功能。发送信息比较简单,创建一个方法即可。
     public void out(String s){
     socket.getOutputString().write(s.getbytes("UTF-8"));
}在根据提示加入try/catch。这里发送信息方法只能发给自己。
  然后是创建读取信息方法。因为我们要一直监听有没有信息要读取,所以这个方法要写入run()里。
      public void run(){
      BufferedReader bf = new BufferedReader
    (new InputStreamReader(
            socket.getInputStream(),"utf-8"));//加入try/catch
       String line = null;
       whlie((line = bf.readline())!=null){
       //当循环结束意味着我们读取了写入的信息 存在line里
        }
       bf.close;
}
这样我们ChatSocket基本写完了,然后我们创建ServerSocket对象
   ServerSocket serversocket = new ServerSocket();
   Socket socket = serversocket.accept();
   ChatSocket chatsocket = new ChatSocket(socket);
    chatsocket.start();
写到这里每个线程都是独立的,达不到群聊的功能,所以我创建了一个ChatManager类用来管理每个线程。因为一个聊天室只需要一个ChatManager,所以我对它进行了单例化处理,然后写了一个获取它的方法getManager(),返回值就是ChatManager。还创建了一个Vector容器,用于存放线程。添加了一个add()方法。
   这里还剩下一个最重要的功能--群发信息功能,我们可以将Vector中的每一个线程遍历出来,如果不是本线程,则发送信息line,发送信息功能chatSocket里已经写好了,
public void publish(ChatSocket cs,String outString){
for(int i=0;i<vector.size();i++){
ChatSocket csChatSocket = vector.get(i);
if(!cs.equals(csChatSocket)){
csChatSocket.output(outString);
}
}
}
outString就是我们要发送的之前读取的信息line,所以在读取line之后调用publish方法,就把写入的信息发给了其他的客户端,整个服务器我们就搭建好了。最后附上程序。

socket聊天室之服务器搭建

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
1, 知识点介绍: UDP:将数据及源和目的封装成数据包中,不需要建立连接每个数据报的大小在限制在64
内容摘要 1.程序架构 2.通信协议 3.服务器源代码 4.客户端源代码 5.运行效果 一、程序架构 在开发一
该例子是一个异步TCP Socket聊天室! 1个服务器 N个客户端 下载下来后,直接将本机的IP改为192.168.
内容摘要 1.程序架构 2.通信协议 3.服务器源代码 4.客户端源代码 5.运行效果 一、程序架构 在开发一
该例子是一个异步TCP Socket聊天室! 1个服务器 N个客户端 下载下来后,直接将本机的IP改为192.168.
以C#编写的Socket服务器的Android手机聊天室Demo 内容摘要 1.程序架构 2.通信协议 3.服务器源代码 4
该例子是一个异步TCP Socket聊天室! 1个服务器 N个客户端 下载下来后,直接将本机的IP改为192.168.
内容摘要 1.程序架构 2.通信协议 3.服务器源代码 4.客户端源代码 5.运行效果 &nb
趁着放假的这几天,根据之前学的Java me方面的知识,做了一个基于Socket的手机聊天小软件。主要是通
趁着放假的这几天,根据之前学的Java me方面的知识,做了一个基于Socket的手机聊天小软件。主要是通
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号