一、服务器端代码

package org.clentserver;

import java.io.*;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.net.Socket;

import java.net.ServerSocket;

public class csDemo01 extends JFrame implements ActionListener

{

ServerSocket server;//服务器端套接字

Socket theClient;//与客户端通信的套接字

boolean done;//通信是否结束

JButton sent;//发送按钮

JTextArea chatContent;//聊天内容区

JTextField sentence;//聊天信息栏

DataInputStream in = null;//来自客户端的输入流

DataOutputStream out = null;//发送到客户端的输出流

public csDemo01()

{

buildGUI("聊天室----服务器端");

try

{

server = new ServerSocket(8888);//创建服务器套接字对象

}

catch (IOException e)

{

System.out.println(e);

}

while (true)

{

try

{

theClient = server.accept();

out = new DataOutputStream(theClient.getOutputStream());

in = new DataInputStream(theClient.getInputStream());

done = true;

String line = null;

while(done)

{

while((line = in.readUTF())!=null)

{

chatContent.append("对方:"+line+"\n");

}

in.close();

out.close();

theClient.close();

}

}

catch (Exception e1)

{

chatContent.append("对方("+theClient.getInetAddress()+")已经离开聊天室");

}

}

}

public void buildGUI(String title)//构造图形界面

{

this.setTitle(title);

this.setSize(400,300);

Container container = this.getContentPane();

container.setLayout(new BorderLayout());

JScrollPane centerPane = new JScrollPane();

chatContent = new JTextArea();

centerPane.setViewportView(chatContent);

container.add(centerPane,BorderLayout.CENTER);

chatContent.setEditable(false);

JPanel bottomPanel = new JPanel();

sentence = new JTextField(20);

sent = new JButton("发送");

bottomPanel.add(new JLabel("聊天信息"));

bottomPanel.add(sentence);

bottomPanel.add(sent);

container.add(bottomPanel,BorderLayout.SOUTH);

sent.addActionListener(this);

sentence.addActionListener(this);

this.setVisible(true);

this.addWindowListener(new WindowAdapter()//匿名内部内监听窗口关闭操作

{

public void windowClosing(WindowEvent e)

{

try

{

out.writeUTF("bye");

}

catch (IOException e2)

{

System.out.println("服务器端窗口关闭。。。");

}

finally

{

System.exit(0);

}

}

});

}

public void actionPerformed(ActionEvent e)

{

String str = sentence.getText();//获取聊天信息栏的聊天内容

if(str!=null&&!str.equals(""))//如果聊天内容不为空,则发送信息

{

chatContent.append("本人:"+str+"\n");

try

{

out.writeUTF(sentence.getText());

}

catch (Exception e3)

{

chatContent.append("客户端不存在...\n");

}

}

else

{

chatContent.append("聊天信息不能为空\n");

}

sentence.setText("");//清空聊天信息栏的内容

}

public static void main(String[] args)

{

new csDemo01();

}

}

二、

客户端代码

package org.clentserver;

import java.io.*;

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.net.Socket;

public class OfcsDemo02 extends JFrame implements ActionListener

{

Socket client;

boolean done;

JButton sent;

JTextArea chatContent;

JTextField sentence;

DataInputStream in = null;

DataOutputStream out = null;

public OfcsDemo02()

{

buildGUI("聊天室----客户机端");

try

{

client = new Socket("localhost",8888);

out = new DataOutputStream(client.getOutputStream());

in = new DataInputStream(client.getInputStream());

done = false;

String line = null;

while(!done)

{

while((line = in.readUTF())!=null)

{

chatContent.append("对方:"+line+"\n");

if(line.equals("bte"))

{

String msg = "服务器发来结束通信命令!\n";

msg += "系统将在您确认此对话框的8秒钟后关闭,\n";

JOptionPane.showMessageDialog(this, msg);

Thread.sleep(8000);

done = true;

break;

}

}

in.close();

out.close();

System.exit(0);

}

}

catch (Exception e)

{

chatContent.append("服务器已关闭。。。\n");

}

}

public void buildGUI(String title)

{

this.setTitle(title);

this.setSize(400,300);

Container container = this.getContentPane();

container.setLayout(new BorderLayout());

JScrollPane centerPane = new JScrollPane();

chatContent = new JTextArea();

centerPane.setViewportView(chatContent);

container.add(centerPane,BorderLayout.CENTER);

chatContent.setEditable(false);

JPanel bottomPanel = new JPanel();

sentence = new JTextField(20);

sent = new JButton("发送");

bottomPanel.add(new JLabel("聊天信息"));

bottomPanel.add(sentence);

bottomPanel.add(sent);

container.add(bottomPanel,BorderLayout.SOUTH);

sent.addActionListener(this);

sentence.addActionListener(this);

this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

public void actionPerformed(ActionEvent e)

{

String str = sentence.getText();

if(str!=null&&!str.equals(""))

{

chatContent.append("本人:"+str+"\n");

try

{

out.writeUTF(sentence.getText());

}

catch (Exception e3)

{

chatContent.append("服务器没有启动...\n");

}

}

else

{

chatContent.append("聊天信息不能为空\n");

}

sentence.setText("");

}

public static void main(String[] args)

{

new OfcsDemo02();

}

}

三、

效果展示

java c s聊天程序_java----------C/S编程-----简单聊天程序相关推荐

  1. java socket接口文档_Java进阶 - 网络编程、Socket、函数式接口、常用的函数式接口...

    1.网络通信协议 网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信.这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式.传输速率.传输步骤 ...

  2. java 网络编程简单聊天_网络编程之 TCP 实现简单聊天

    网络编程之 TCP 实现简单聊天 客户端 1.连接服务器 Socket 2.发送消息 package lesson02;import java.io.IOException;import java.i ...

  3. java 网络io详解_Java网络socket编程详解

    或许有点长 但是一步步教你 我想你也愿意看7.2面向套接字编程 我们已经通过了解Socket的接口,知其所以然,下面我们就将通过具体的案例,来熟悉Socket的具体工作方式7.2.1使用套接字实现基于 ...

  4. java入门篇(一)如何编写一个简单的程序

    最近准备花费很长一段时间写一些关于Java的从入门到进阶再到项目开发的教程,希望对初学Java的朋友们有所帮助,更快的融入Java的学习之中. 主要内容包括JavaSE.JavaEE的基础知识以及如何 ...

  5. java ee实例详解_Java EE企业级编程开发实例详解

    第1章 javaee开发基础 9 q5 @! t4 \9 t. }: K# R1 }1.1 javaee6简介 / p* T1 g! F  K3 ^4 j3 |1.1.1学习 javaee的意义 5 ...

  6. ubuntu下使用vscode开发golang程序,从控制台到简单web程序

    最近项目要使用go语言开发一个web程序,由于是第一次使用go开发,就将开发过程中的点滴做个记录吧. 目录 1.安装go 1.1 安装 1.2 配置go语言环境变量 2.vscode配置go开发 2. ...

  7. linux编写运行shell程序,Linux的Shell编程运行Shell程序的方法有哪些呢?

    用户可以用任何编辑程序来编写Shell程序.因为Shell程序是解释执行的,所以不需要编译成目的程序.按照Shell编程的惯例,以 bash为例,程序的第一行一般为"#!/bin/bash& ...

  8. python socket 网络聊天室_Python基于Socket实现简单聊天室

    本文实例为大家分享了Python基于Socket实现简单聊天室,供大家参考,具体内容如下 服务端 #!/usr/bin/env python # -*- coding: utf-8 -*- # @Ti ...

  9. java c s聊天程序_Java建立C/S 模式聊天室服务器和客户端

    时间:2018-12-01 概述:聊天室 服务器 客户端 在网络上经常进各种聊天室,本例通过编程实现了C/S 模式的聊天室服务器和客户端.实现方法:ChatServer 类实现了一个聊天室服务器端, ...

  10. java开发websocket聊天室_java实现基于websocket的聊天室

    [实例简介] java实现基于websocket的聊天室 [实例截图] [核心代码] chatMavenWebapp └── chat Maven Webapp ├── pom.xml ├── src ...

最新文章

  1. 如何使用jsp自定义标签 JspTag 使用入门
  2. 微软发布了云Bot-as-a-Service平台
  3. sniffer使用查网络故障
  4. 吴恩达深度学习课程deeplearning.ai课程作业:Class 2 Week 1 1.Initialization
  5. 6a标准 api_【阀门标准】API SPEC 6A CHINESE-2010中文版.pdf
  6. 华为双11发 20 亿奖金!?
  7. 计算机word图表布布局在哪,新版Word中的图表布局功能详解
  8. 建立网站的全套流程与详细解释(转载)
  9. 滴滴,一个连接者的责任边界
  10. python批量将文件夹下所有图片中一种颜色改变为随机颜色
  11. 表白网页在线制作-我要表白网-最浪漫的表白网页在线生成网站
  12. 逻辑回归(logistics regression)
  13. CodeForces 1293A——ConneR and the A.R.C. Markland-N【签到题】
  14. IT视频课程集(包含各类Oracle、DB2、Linux、Mysql、Nosql、Hadoop、BI、云计算、编程开发、网络、大数据、虚拟化
  15. alt tab无法切换窗口
  16. gitlab服务器代码存储位置,gitlab仓库存储位置的修改方法
  17. 全国计算机四级之网络工程师知识点(四)
  18. Shell语言(一)
  19. 基于深度学习的目标检测算法综述
  20. 计算机职业生涯规划范文网,计算机职业生涯规划书范文

热门文章

  1. 3篇SCI定A类博士!直聘副教授七级!有偿70㎡住房+30万安家费+25万科启
  2. 乐动体育推荐:9款最佳编程字体
  3. 微信小程序使用图标库
  4. 高清银行LOGO图片整合分享
  5. dbf转成excel_怎么样把dbf文件转换成excel/dbf转excle
  6. 《Python黑帽子》python3代码实现(第五章)
  7. git/gitflow git工作流
  8. LabView学习笔记——简易入门AND初级实战项目(计算器)
  9. Jetson TX1开发笔记(三):开发利器-Nsight Eclipse Edition
  10. c语言程序设计必备单词,(完整版)C语言编程必背单词.docx