问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

速求用JAVA语言写聊天室的源代码

发布网友 发布时间:2022-04-22 04:20

我来回答

4个回答

热心网友 时间:2022-04-20 02:18

【ClientSocketDemo.java 客户端Java源代码】

import java.net.*;
import java.io.*;
public class ClientSocketDemo
{
//声明客户端Socket对象socket
Socket socket = null;

//声明客户器端数据输入输出流
DataInputStream in;
DataOutputStream out;

//声明字符串数组对象response,用于存储从服务器接收到的信息
String response[];

//执行过程中,没有参数时的构造方法,本地服务器在本地,取默认端口10745
public ClientSocketDemo()
{
try
{
//创建客户端socket,服务器地址取本地,端口号为10745
socket = new Socket("localhost",10745);

//创建客户端数据输入输出流,用于对服务器端发送或接收数据
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());

//获取客户端地址及端口号
String ip = String.valueOf(socket.getLocalAddress());
String port = String.valueOf(socket.getLocalPort());

//向服务器发送数据
out.writeUTF("Hello Server.This connection is from client.");
out.writeUTF(ip);
out.writeUTF(port);

//从服务器接收数据
response = new String[3];
for (int i = 0; i < response.length; i++)
{
response[i] = in.readUTF();
System.out.println(response[i]);
}
}
catch(UnknownHostException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
}

//执行过程中,有一个参数时的构造方法,参数指定服务器地址,取默认端口10745
public ClientSocketDemo(String hostname)
{
try
{
//创建客户端socket,hostname参数指定服务器地址,端口号为10745
socket = new Socket(hostname,10745);
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());

String ip = String.valueOf(socket.getLocalAddress());
String port = String.valueOf(socket.getLocalPort());

out.writeUTF("Hello Server.This connection is from client.");
out.writeUTF(ip);
out.writeUTF(port);

response = new String[3];
for (int i = 0; i < response.length; i++)
{
response[i] = in.readUTF();
System.out.println(response[i]);
}
}
catch(UnknownHostException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
}

//执行过程中,有两个个参数时的构造方法,第一个参数hostname指定服务器地址
//第一个参数serverPort指定服务器端口号
public ClientSocketDemo(String hostname,String serverPort)
{
try
{
socket = new Socket(hostname,Integer.parseInt(serverPort));
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());

String ip = String.valueOf(socket.getLocalAddress());
String port = String.valueOf(socket.getLocalPort());

out.writeUTF("Hello Server.This connection is from client.");
out.writeUTF(ip);
out.writeUTF(port);

response = new String[3];
for (int i = 0; i < response.length; i++)
{
response[i] = in.readUTF();
System.out.println(response[i]);
}
}
catch(UnknownHostException e){e.printStackTrace();}
catch(IOException e){e.printStackTrace();}
}

public static void main(String[] args)
{
String comd[] = args;
if(comd.length == 0)
{
System.out.println("Use localhost(127.0.0.1) and default port");
ClientSocketDemo demo = new ClientSocketDemo();
}
else if(comd.length == 1)
{
System.out.println("Use default port");
ClientSocketDemo demo = new ClientSocketDemo(args[0]);
}
else if(comd.length == 2)
{
System.out.println("Hostname and port are named by user");
ClientSocketDemo demo = new ClientSocketDemo(args[0],args[1]);
}
else System.out.println("ERROR");
}
}
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

【ServerSocketDemo.java 服务器端Java源代码】

import java.net.*;
import java.io.*;
public class ServerSocketDemo
{
//声明ServerSocket类对象
ServerSocket serverSocket;

//声明并初始化服务器端监听端口号常量
public static final int PORT = 10745;

//声明服务器端数据输入输出流
DataInputStream in;
DataOutputStream out;

//声明InetAddress类对象ip,用于获取服务器地址及端口号等信息
InetAddress ip = null;

//声明字符串数组对象request,用于存储从客户端发送来的信息
String request[];

public ServerSocketDemo()
{
request = new String[3]; //初始化字符串数组
try
{
//获取本地服务器地址信息
ip = InetAddress.getLocalHost();

//以PORT为服务端口号,创建serverSocket对象以监听该端口上的连接
serverSocket = new ServerSocket(PORT);

//创建Socket类的对象socket,用于保存连接到服务器的客户端socket对象
Socket socket = serverSocket.accept();
System.out.println("This is server:"+String.valueOf(ip)+PORT);

//创建服务器端数据输入输出流,用于对客户端接收或发送数据
in = new DataInputStream(socket.getInputStream());
out = new DataOutputStream(socket.getOutputStream());

//接收客户端发送来的数据信息,并显示
request[0] = in.readUTF();
request[1] = in.readUTF();
request[2] = in.readUTF();
System.out.println("Received messages form client is:");
System.out.println(request[0]);
System.out.println(request[1]);
System.out.println(request[2]);

//向客户端发送数据
out.writeUTF("Hello client!");
out.writeUTF("Your ip is:"+request[1]);
out.writeUTF("Your port is:"+request[2]);
}
catch(IOException e){e.printStackTrace();}
}
public static void main(String[] args)
{
ServerSocketDemo demo = new ServerSocketDemo();
}
}

热心网友 时间:2022-04-20 03:36

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import java.net.*;
import java.io.*;
/*
*聊天室服务的主框架类
*/
public class ChatServer extends JFrame implements ActionListener{
public static int port=8888;//服务端的侦听端口
ServerSocket serverSocket;//服务端Socket
Image icon;//程序图标
JComboBox combabox;//选择发送消息的接受者
JTextArea messageShow;//服务端的信息显示
JScrollPane messageScrollPane;//信息的滚动条
JtextField showStatus;//显示用户连接状态
JLabel sendToLabel,messageLabel;
JTextField sysMessage;//服务端消息的发送
JButton sysMessageButton;//服务器消息的发送按钮
UserLinkList userLinkList;//用户链表
//建立菜单栏
JMenuBar jMenuBar=new JMenuBar();
//建立菜单组
JMenu serviceMenu=new JMenu("服务(V)");
//建立菜单项
JMenuItem portItem=new JMenuItem("端口设置(p)");
JMenuItem startItem=new JMenuItem("启动服务(s)");
JMenuItem stopItem=new JMenuItem("停止服务(T)");

JMenu helpMenu=JMenu("帮助(H)");
JMenuItem helpMenu=new JMenuItem("帮助(H)");
//建立工具栏
JToolBar toolBar=new JToolBar;

//建立工具栏中的按钮
JButton portSet;//启动服务端侦听
JButton startServer;//启动服端务侦听
JButton stopServer;//关闭服务端侦听
JButton exitButton;//退出按钮

//框架的大小
Dimension faceSize=new Dimension(400,600);

SeverListenThresd ListenThresd;

JPanel downPanel;
GridBagLayout gridBag;
GridBagConstraints gridBagCon;

/**
*服务端构造函数
*/
public ChatServer()
init();//初始化程序

//添加框架的关闭事件处理
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setSize(faceSize);

//设置运行时窗口的位置
Dimension screenSize=
Toolkit.getDefaultToolkit().getScreenSize();
this.setLocation((int)(screenSize.width-faceSize())
/2,(int)(screenSize.height-faceSize.getHeight())/2);
this.setResizable(false);

this.setTitle("聊天室服务端");//设置标题

//程序图标
icon=getImage("icon.gif");
this.setIconImage(icon);//设置程序图标
show();

//为服务菜单栏设置热键'V'
serviceMenu.setMnemonic('V')

//为端口设置快捷键Ctrl+P
portItem.setMnemonic('P');
portItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_P,InputEvent.CTRL_MASK));

//为启动服务快捷键为Ctrl+S
startItem.setMnemonic('S');
startItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_S,InputEvent.CTRL_MASK));

//为端口设置快捷键Ctrl+T
stopItem.setMnemonic('T');
stopItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_T,InputEvent.CTRL_MASK));

//为退出设置快捷键为Ctrl+X
exitItem.setMnemonic('X');
exitItem.setAccelerator(KeyStroke.getKeyStroke
(KeyEvent.VK_X,InputEvent.CTRL_MASK));

//为帮助菜单栏设置热键'H'
helpMenu.setMnemonic('H');

//为帮助设置快捷键为Ctrl+H
helpItem.setMnemonic('p');
helpItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,InputEvent.CTRL_MASK));

}

/**
*程序初始化函数
*/
public void init(){

Container contentPane=getContentPane();
contentPane.setLayout(new BoraderLayout());
//添加菜单栏
serviceMenu.add(portItem);
serviceMenu.add(startItem);
serviceMenu.add(stopItem);
serviceMenu.add(exitItem);
jMenuBar.add(serviceMenu);
helpMenu.add(helpItem);
jMenubar.add(helpMenu);
setJmenuBar(jMenuBar);

//初始化按钮
portSet=new JButton("端口服务");
startServer=new JButton("启动服务");
stopServer=new JButton("停止服务");
exitButton=new JButton("退出");
//将按钮添加到工具栏
toolBar.add(portSet);
toolBar.addSeparator();//添加分隔栏
toolBar.add(starServer);
toolBar.add(stopServer);
toolBar.addSeparator();//添加分隔栏
toolBar.add(exitButton);
contentPane.add(toolBar,BorderLayout.NORTH);

//初始时,令停止服务按钮不可用
stopServer.setEnabled(false);
stopItem.setEnabled(false);

//为菜单栏添加事件监听
portItem.addActionListener(this);
startItem.addActionListener(this);
stopItem.addActionListener(this);
exitItem.addActionListener(this);
helpItem.addActionListener(this);

//添加按钮的事件侦听
portSet.addActionListener(this);
startServer.addActionListener(this);
stopServer.addActionListener(this);
exitButton.addActionListener(this);

combobox=new JComboBox();
conbobox.inserItemAt("所有人",0);
combobox.setSelectedIndex(0);

messageShow=new JTextArea();
messageShow.setEditable(false);//添加滚动条
messageScrollpane =new JScrollPane(messageShow,
JScorellpane.VETICAL_SCROLLBAR_AS_NEEDED,
JScrollPane.HORIZONTAL_AS_NEEDED);

热心网友 时间:2022-04-20 05:11

嘿。。居然一个班的。。连老师示例的字都一样。。

热心网友 时间:2022-04-20 07:02

不懂swing..呵呵.不过JSP也可以做
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 毕志飞2.2评分电影叫什么名字? 影响精神分裂症的社会心理因素有哪些 php+安卓实现类似QQ的即时聊天 如何评价毕志飞导演? webIM如何跳转到指定聊天界面 导演毕志飞起诉豆瓣被驳回,他的电影评分是怎样得... android版QQ表情功能的实现,要一个完整的demo 《导演请指教》中毕志飞的表现怎么样? Ios开发 如何做到像微信聊天界面那样可以平滑下拉... 毕志飞作为国内导演,他都有过哪些作品? 要cocos2d-x里面怎么样做聊天界面 区块链的交易过程是什么样的?最好举例说明 《导演请指教》中,毕志飞的表现怎么样? 区块链分为几种? 《导演请指教》毕志飞作品被骂,他的导演水平到底... Android开发P2P聊天是怎么实现的 用java写一个简单的聊天室,用户界面和服务器相连... 区块链游戏究竟是什么,能赚钱吗 毕志飞是谁? 毕志飞泪洒《导演请指教》现场,《逐梦演艺圈》的... 有没有大神能用简单易懂的话解释一下什么是区块链... 毕志飞也是导演之一,为何他一直没什么名气? 我用C#做一个聊天工具,非常简单的那种 魅族pro7plus手机什么时候上市的 毕志飞因《逐梦演艺圈》差评起诉豆瓣被判驳回,如... 能通俗的解释一下什么是区块链吗? 有人用过腾讯通讯云IM吗 你觉得《导演请指教》中毕志飞的表现怎么样? 魅族 魅蓝5s是什么时候上市的 jsp如何实现简单的在线聊天功能 炮轰徐峥的毕志飞,他有什么来头? java初学者,加入图片没有改变 《导演请指教》毕志飞扛起话题KPI,他在节目中的表... 毕志飞回应起诉豆瓣被驳回,他都有什么代表作品? 毕志飞承认自己拍的《逐梦演艺圈》肤浅,这部剧有... 如何记录在一起的时间 毕志飞又发新片,为何这次大家看过纷纷感慨和《逐... 从 Python 改成 Java, 主要是关于图像处理。 史上最低分影片 毕志飞:谁敢说我是烂片导演 origin怎么更新到beta版