高手进,java实现聊天功能

高手进,java实现聊天功能,第1张

。。。这个我以前也遇到过、不过我是用C#写的、不过后来也有java的、你可以、使用Swing做的简单界面,及使用Socket套接字实现简单聊天 。。。。。。但是、我不知道你问的是C/S模式还是B/S 模式?
其中、B/S模式可以用Servlet来实现,思路是通过Context上下文绑定参数实现
而C/S模式的,是通过RMI远程调用的方法实现的。。。先给你个C/S模式的核心代码。。。import javaawt;
import javaawtevent;
import javaxswing;
import javaio;
import javanet;public class Server extends JFrame
{
public static void main(String [] args)
{
Server server=new Server();
//设定框架的关闭方式
serversetDefaultCloseOperation(JFrameEXIT_ON_CLOSE);
//显示框架
serversetVisible(true);
serverpack();
CreateServer cs=new CreateServer(server);
}
// 设定框架的宽度和高度
private static final int WIDTH=450;
private static final int HEIGHT=450;
// 聊天信息
JTextArea mainArea=new JTextArea(12,35);
// 发送信息的填写框
JTextArea sendArea=new JTextArea(5,30);

// 构造函数
public Server()
{
//定位框架
Toolkit kit=ToolkitgetDefaultToolkit();
Dimension screenSize=kitgetScreenSize();//获取电脑当前分辨率
int width=screenSizewidth;
int height=screenSizeheight;
int x=(width-WIDTH)/2;
int y=(height-HEIGHT)/2;
//设置窗口显示位置
setLocation(x,y);
//设置框架大小
setSize(WIDTH,HEIGHT);
//设置标题
setTitle("小新新聊天服务器");
//设置窗口的自定义大小
setResizable(false);
//在内容表格上创建3个面板并加入到内容表格
Container con=thisgetContentPane();
JPanel labelPanel=new LabelPanel();
conadd(labelPanel,BorderLayoutNORTH);
JPanel contentPanel=new ContentPanel();
conadd(contentPanel,BorderLayoutCENTER);
JPanel sendPanel=new SendPanel();
conadd(sendPanel,BorderLayoutSOUTH);
}
//聊天窗口的标题面板
class LabelPanel extends JPanel
{
public LabelPanel()
{
Font font=new Font("Dialog",FontBOLD,18);
JLabel label=new JLabel("欢迎使用小新新聊天服务器");
labelsetFont(font);
thisadd(label);
}
}
// 聊天信息查看面板
//该面板内的区域为不可编辑区域
class ContentPanel extends JPanel
{
public ContentPanel()
{
FlowLayout fl=new FlowLayout(FlowLayoutCENTER);
thissetLayout(fl);
mainAreasetLineWrap(true);
mainAreasetEditable(false);
JScrollPane scrollPanel=new JScrollPane(mainArea);
thisadd(scrollPanel);
}
}
// 填写发送信息的面板
class SendPanel extends JPanel
{
public SendPanel()
{
//面板的组件之间水平分隔15像素,垂直间距10像素
FlowLayout layout=new FlowLayout(FlowLayoutLEFT,15,10);
thissetLayout(layout);
sendAreasetLineWrap(true);
JScrollPane scrollPanel=new JScrollPane(sendArea);
thisadd(scrollPanel);
JButton send=new JButton("发送");
thisadd(send);
//对发送按钮注册动作监听器
sendaddActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent e)
{
String msg=sendAreagetText();
if(!msgequals(""))
{
mainAreaappend("【服务器】:"+msg+"\n");
sendAreasetText("");
CreateServersendMsg(msg);
}
else
{
return;
}
}
});
}
}
}
//创建服务器ServerSocket的类
class CreateServer extends Thread
{
private Server server;

private static BufferedReader in=null;//存储客户端发送到服务器的数据
private static PrintWriter out=null;//存储服务器发送到客户端的数据
private Socket socket=null;//等待客户端连接socket
private ServerSocket ss=null;//开启服务器socket连接

//构造函数
public CreateServer(Server s)
{
thisserver=s;
try
{
ss=new ServerSocket(2345);
Systemoutprintln("服务器成功启动!");
socket=ssaccept();//等待客户端请求
//获取输入到服务器的数据
in=new BufferedReader(new InputStreamReader(socketgetInputStream()));
//获取输出到客户端的数据
out=new PrintWriter(socketgetOutputStream(),true);
outprintln("你好!");
}
catch(Exception r)
{
rprintStackTrace();
}
thisstart();//启动线程
}
//实现信息发送到客户端的发送方法
public static void sendMsg(String s)
{
try
{
outprintln("【服务器】:"+s+"\n");
}
catch(Exception e)
{
Systemoutprintln("发送信息失败!!");
eprintStackTrace();
}
}
// 线程Thread类的run方法实现对客户端发送来的数据监听
//线程启动后开始该方法,执行线程体
public void run()
{
String msg="";
while(true)
{
try
{
msg=inreadLine();
//Threadsleep(500);//线程睡眠
}
catch (SocketException ex)
{
exprintStackTrace();
break;
}
catch(IOException r)
{
rprintStackTrace();
break;
}
//若从客户端获取的信息不为空对象也不为空串
//则把信息显示在聊天信息文本域
if(msg!=null && msgtrim()!="")
{
servermainAreaappend(msg+"\n");
}
}

}
}

以上就是关于高手进,java实现聊天功能全部的内容,包括:高手进,java实现聊天功能、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10105659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存