多用户的P2P在线聊天程序,完全源码 连载二 编写用户实例类

本例开发实现了一个多用户的P2P在线聊天程序,C/S结构,客户端可发送消息,然后其他的用户接收到该消息并将其显示在界面中,服务器对信息进行有关处理并向适当的用户发送,同时在服务器端还将显示所有的在线用户,网络管理员即服务器端管理员可选中某用户并将其踢出该聊天室。

本篇为第二篇,如果您是第一次进来请从第一篇开始,此程序不用修改完全可用,第一篇地址:http://java161.iteye.com/blog/616113

 

2 编写用户实例类(ServerConn.java)

   在该用户实例类中,首先建立一个线程来监听该用户所发送的信息,并对该信息进行处理,同时实例化一个输出流用来向该客户发送指定信息:

protected UserThread reader;

protected DataOutputStream outStream;

outStream=new DataOutputStream(clientSock.getOutputStream());

    reader=new UserThread(server,clientSock);

reader.start();

 

向客户端发送信息函数如下所示:

public synchronized void sendString(String str)

    {

        if(str==null)

        {

            disconnection();

            return;

        }

        try

        {

            outStream.writeUTF(str);

        }

        catch(Exception writeError)

        {

            writeError.printStackTrace() ;

            disconnection();

            return;

        }

    }

 

程序清单:

package Server;

import java.awt.*;
import java.awt.event.*;
import java.sql.*;
import java.io.*;
import java.net.*;
import java.util.*;
import com.borland.jbcl.layout.*;
import com.borland.jbcl.control.*;
/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2010</p>
 *
 * <p>Company: </p>
 *
 * @author
www.jianfei5u.com
 * @version 1.0
 */
public class ServerConn extends Object{
    protected SimpleServer server;
    protected Socket clientSock;
    protected UserThread reader;
    protected DataOutputStream outStream;

    public ServerConn(SimpleServer server,Socket clientSock)throws IOException
    {
        this.server =server;
        this.clientSock =clientSock;
        outStream=new DataOutputStream(clientSock.getOutputStream());
        reader=new UserThread(server,clientSock);
        reader.start();
    }

    public synchronized void sendString(String str)
    {
        if(str==null)
        {
            disconnection();
            return;
        }
        try
        {
            outStream.writeUTF(str);
        }
        catch(Exception writeError)
        {
            writeError.printStackTrace() ;
            disconnection();
            return;
        }
    }

    public synchronized void disconnection()
    {
        try
        {
            reader.closeConnection();
        }
        catch(Exception e)
        {
            reader.stop();
        }
    }
}

未完待续。。。下篇 编写监听用户信息类

地址:http://java161.iteye.com/blog/616132

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值