本文实例为大家分享了一款Socket简易聊天工具,希望大家喜欢。

代码运行如图,看起来还不错

服务端

package qiu;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.print.Printable;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.ServerSocket;

import java.net.Socket;

import java.util.Calendar;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

/**

* 简单聊天软件的服务器

* */

public class MyServer extends JFrame implements ActionListener{

JTextArea jTextArea =null;//用来显示纯文本的单行区域

JTextField jTextField=null;//可以允许用来编辑单行文本

JButton sendButton=null;

JPanel jPanel=null;

JScrollPane jScrollPane =null;

//把信息发给客户端对象

PrintWriter printWriter =null;

/**

* 服务端的主函数

* */

public static void main(String[] args) {

// TODO Auto-generated method stub

new MyServer();

}

/**

* 服务端的构造函数,用来进行初始化

* */

public MyServer(){

//这里是对GUI的初始化

jTextArea = new JTextArea();

jTextField= new JTextField(20);

sendButton= new JButton("发送");

sendButton.addActionListener(this);

sendButton.setActionCommand("send");

jScrollPane= new JScrollPane(jTextArea);

jPanel = new JPanel();

jPanel.add(jTextField);//添加编辑框

jPanel.add(sendButton);//添加按钮

//将两个面板添加布局

this.add(jScrollPane,BorderLayout.CENTER);

this.add(jPanel,BorderLayout.SOUTH);

this.setSize(400,300);

this.setTitle("聊天服务器");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置退出按钮

this.setVisible(true);

this.setResizable(true);

//下面是socket服务器的搭建

try {

//服务器监听

ServerSocket ss = new ServerSocket(9988);

//等待客户端连接

Socket socket = ss.accept();

//获得客户端发送过来的数据的流

BufferedReader br = new BufferedReader

(new InputStreamReader(socket.getInputStream()));

printWriter = new PrintWriter(socket.getOutputStream(),true);

//读取从客户端发送过来的信息

while(true){

String info = br.readLine();

jTextArea.append("客户端 "+getTime()+"\r\n"+info+"\r\n");

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} }

/**

* 用来获取当前的时间

* @return 当前的时间

*/

public String getTime(){

//可以对每个单独时间域进行修改

Calendar c = Calendar.getInstance();

int hour = c.get(Calendar.HOUR_OF_DAY);//获取小时

int minute = c.get(Calendar.MINUTE);

int second = c.get(Calendar.SECOND);

return hour+":"+minute+":"+second;

}

/**

* 当button被点击的时候调用

*/

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

//当按钮按下的时候调用

if(e.getActionCommand().equals("send")){

//把服务器在jTextField写的内容发送给客户端

String info= jTextField.getText();

jTextArea.append("服务器 "+getTime()+"\r\n"+info+"\r\n");

printWriter.println(info);

//清楚发送框内容

jTextField.setText("");

}

}

}

客户端

package qiu;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.io.PrintWriter;

import java.net.Socket;

import java.net.UnknownHostException;

import java.util.Calendar;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTextArea;

import javax.swing.JTextField;

/**

* 简单聊天软件的客户端

* */

public class MyClient extends JFrame implements ActionListener{

JTextArea jTextArea=null;

JTextField jTextField=null;

JPanel jPanel=null;

JScrollPane jScrollPane=null;

JButton sendButton=null;

PrintWriter printWriter=null;

/**

* 客户端的主函数

* */

public static void main(String[] args) {

// TODO Auto-generated method stub

new MyClient();

}

/**

* 客户端构造函数用来初始化

* */

public MyClient(){

//GUI初始化

jTextArea= new JTextArea();

jTextField=new JTextField(20);

sendButton= new JButton("发送");

sendButton.addActionListener(this);

sendButton.setActionCommand("send");

jScrollPane=new JScrollPane(jTextArea);

jPanel=new JPanel();

jPanel.add(jTextField);

jPanel.add(sendButton);

this.add(jScrollPane,BorderLayout.CENTER);

this.add(jPanel,BorderLayout.SOUTH);

this.setSize(400, 300);

this.setTitle("聊天客户端");

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

this.setVisible(true);

this.setResizable(true);

//socket通信代码

try {

Socket s= new Socket("127.0.0.1",9988);

BufferedReader br = new BufferedReader

(new InputStreamReader(s.getInputStream()));

printWriter= new PrintWriter(s.getOutputStream(),true);

while(true){

//不停的读取服务器发过来的信息

String string=br.readLine();

jTextArea.append("服务器 "+getTime()+"\r\n"+string+"\r\n");

}

} catch (UnknownHostException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

/**

* 用来获取当前的时间

* @return 当前的时间

*/

public String getTime(){

//可以对每个单独时间域进行修改

Calendar c = Calendar.getInstance();

int hour = c.get(Calendar.HOUR_OF_DAY);//获取小时

int minute = c.get(Calendar.MINUTE);

int second = c.get(Calendar.SECOND);

return hour+":"+minute+":"+second;

}

/**

* 当button被点击的时候调用

*/

@Override

public void actionPerformed(ActionEvent e) {

// TODO Auto-generated method stub

if(sendButton.getActionCommand().equals("send")){

String info= jTextField.getText();

//将客户端发送的信息发送给服务端

jTextArea.append("客户端 "+getTime()+"\r\n"+info+"\r\n");

printWriter.println(info);

jTextField.setText("");

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

java socket 工具_java Socket简易聊天工具相关推荐

  1. java三层 开源_java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源...

    [实例简介] java 山寨qq 聊天工具(基于mvc三层架构,附 mvc架构模式pdf说明文档)支持开源 [实例截图] [核心代码] java山寨qq聊天工具(基于mvc三层架构,附mvc架构模式p ...

  2. 基于Socket的简易聊天工具

    文章目录 基于Socket的简易聊天工具 简易聊天工具的功能: 项目设计 1.界面设计 2.类的设计 程序编写 1.ChatServer 2.ChatFrame 窗体的设计 1.ChatFrame的窗 ...

  3. 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具。QQ_Chat

    代码下载地址 原博客地址 QQ_Chat 基于TCP,Socket编程,模仿腾讯QQ界面,使用Java开发的一款网络聊天工具. (内含报告) 工具: Eclipse.Navicat for MySQL ...

  4. RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本━新增企业通(内部简易聊天工具)...

    RDIFramework.NET ━ .NET快速信息化系统开发框架 V2.8 版本 新增企业通(内部简易聊天工具) RDIFramework.NET,基于.NET的快速信息化系统开发.整合框架,给用 ...

  5. java源码聊天软件_【原创】基于Java NIO的多人在线聊天工具源码实现(登录,单聊,群聊)...

    近来在学习Java NIO网络开发知识,写了一个基于Java NIO的多人在线聊天工具MyChat练练手.源码公开在Coding上: 编写一个基于Java NIO的多人在线聊天工具,需要以下几方面的知 ...

  6. java socket 工具_java+socket 简易聊天工具

    1.服务器端程序 package com.test3; import java.io.*; import java.net.*; import java.awt.*; import java.awt. ...

  7. java socket聊天工具_java+socket 简易聊天工具

    1.服务器端程序 package com.test3; import java.io.*; import java.net.*; import java.awt.*; import java.awt. ...

  8. java+socket 简易聊天工具

    1.服务器端程序 package com.test3; import java.io.*; import java.net.*; import java.awt.*; import java.awt. ...

  9. 【Java】UDP Socket编程案例——文件传输聊天工具

    UDP(用户数据报协议)就像日常生活中的邮件投递,是不能保证可靠地寄到目的地.UDP是无连接的,对系统资源的要求较少,UDP可能丢包,也不保证数据顺序.但是对于网络游戏和在线视频等要求传输快,实时性高 ...

最新文章

  1. USEARCH —— 最简单易学的扩增子分析流程
  2. Oracle 11g AMM与ASMM切换
  3. Java Se:自定义ClassLoader
  4. NSIS:判断并安装.NET Framework的例子(转载)
  5. oracle loop index,oracle index 聚集因子
  6. 使用 rose 将 c++代码转换为 uml 类图
  7. MyEclipes 设置代码自动提示
  8. dnf强化卷代码_这行代码告诉你!为什么你地下城与勇士(DNF)的装备强化老是失败?...
  9. mysql 字段值不同枚举_【mysql】关于枚举值 '1','0'的神奇判断
  10. 「06」回归的诱惑:一文读懂线性回归(Python实战篇)
  11. How to enable/disable EWF
  12. 官网下载InstallShield Limited Edition for Visual Studio
  13. WhatsApp对话生成器使用教程
  14. 学生专用计算机怎么打,电脑使用word快速打出学生座位表的方法
  15. Blow Up 3macOS图片放大锐利的详细使用教程与安装方法
  16. 在线分析仪器(一)概述
  17. 有人云平台全面升级!“旧词新释”秒懂物联网云平台的奥秘
  18. android 多媒体列表,android – 使用Exoplayer的流媒体视频列表
  19. android edittext背景颜色,Android 设置 EditText 背景颜色、背景图片
  20. 计算机面试专业英语词汇,面试常用英语,英语面试常用词汇?

热门文章

  1. 编译时如何看到每个文件的编译选项_导出 Clang 可视化编译耗时分析报告 —— ftimetrace 的使用...
  2. 新电脑怎么分盘_电脑如何分盘及删除与合并04
  3. java自定义异常(Exception、throws、try-catch)
  4. GitHub使用流程、初学者的使用方法
  5. 中国人工智能学会通讯——电子商务中的个性化推荐技术剖析 1. 基于人生阶段建模的商品推荐...
  6. 修改eclipse配置文件properties编码格式
  7. [游戏服务器]第一章:多人聊天室-服务端
  8. [LeetCode]:116:Populating Next Right Pointers in Each Node
  9. 自定义ViewGroup (3) 与子View之间 Touch Event的拦截与处理
  10. C语言版回字四种写法的一个例子——数组下标访问