Java基于socket的进程间通信 聊天小程序

Client端:

  1 package mylab;
  2
  3 import java.awt.BorderLayout;
  4 import java.awt.Dimension;
  5 import java.awt.event.ActionEvent;
  6 import java.awt.event.ActionListener;
  7 import java.io.BufferedReader;
  8 import java.io.IOException;
  9 import java.io.InputStreamReader;
 10 import java.io.PrintWriter;
 11 import java.net.Socket;
 12
 13 import javax.swing.JButton;
 14 import javax.swing.JFrame;
 15 import javax.swing.JPanel;
 16 import javax.swing.JScrollPane;
 17 import javax.swing.JTextArea;
 18 import javax.swing.ScrollPaneConstants;
 19
 20 public class Client extends JFrame implements ActionListener {
 21     JTextArea input;
 22     JTextArea output;
 23     JButton close;
 24     JButton send;
 25     JScrollPane top = new JScrollPane();
 26     JPanel medium, bottom;
 27
 28     String inMessage, outMessage;
 29
 30     String s = null;
 31     Socket mysocket;
 32     BufferedReader br = null;
 33     PrintWriter pw = null;
 34
 35     /**
 36      * @param args
 37      */
 38     public Client() {
 39         super();
 40         setTitle("客户端");
 41         setVisible(true);
 42         setBounds(200, 150, 350, 400);
 43         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 44
 45         top = new JScrollPane();
 46         top.setPreferredSize(new Dimension(300, 200));
 47         top.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 48         output = new JTextArea(6, 25);
 49         top.setViewportView(output);
 50
 51         medium = new JPanel();
 52         medium.setPreferredSize(new Dimension(300, 120));
 53         input = new JTextArea(4, 27);
 54         medium.add(input);
 55
 56         bottom = new JPanel();
 57         bottom.setPreferredSize(new Dimension(300, 60));
 58         close = new JButton("关闭");
 59         close.addActionListener(this);
 60         send = new JButton("发送");
 61         send.addActionListener(this);
 62         bottom.add(close);
 63         bottom.add(send);
 64
 65         getContentPane().add(top, BorderLayout.NORTH);
 66         getContentPane().add(medium, BorderLayout.CENTER);
 67         getContentPane().add(bottom, BorderLayout.SOUTH);
 68     }
 69
 70     public static void main(String[] args) {
 71         // TODO Auto-generated method stub
 72         Client client = new Client();
 73         client.run();
 74     }
 75
 76     public void run() {
 77
 78         try {
 79
 80             mysocket = new Socket("127.0.0.1", 2222);
 81             br = new BufferedReader(new InputStreamReader(
 82                     mysocket.getInputStream()));
 83             pw = new PrintWriter(mysocket.getOutputStream(), true);
 84             while ((inMessage = br.readLine()) != null) {
 85                 output.append("服务器说:" + inMessage + "\n");
 86             }
 87
 88         } catch (Exception e) {
 89         }
 90     }
 91
 92     @Override
 93     public void actionPerformed(ActionEvent e) {
 94         // TODO Auto-generated method stub
 95         if (close.hasFocus()) {
 96             try {
 97                 mysocket.close();
 98                 System.out.println("客户端已关闭");
 99             } catch (IOException e1) {
100                 // TODO Auto-generated catch block
101                 e1.printStackTrace();
102             }
103         }
104         if (send.hasFocus()) {
105             outMessage = input.getText();
106             input.setText(null);
107             output.append("客户端说:" + outMessage + "\n");
108             pw.println(outMessage);
109             pw.flush();
110         }
111     }
112
113 }

Server端:

  1 package mylab;
  2
  3 import java.awt.BorderLayout;
  4 import java.awt.Dimension;
  5 import java.awt.event.ActionEvent;
  6 import java.awt.event.ActionListener;
  7 import java.io.BufferedReader;
  8 import java.io.IOException;
  9 import java.io.InputStreamReader;
 10 import java.io.PrintWriter;
 11 import java.net.ServerSocket;
 12 import java.net.Socket;
 13
 14 import javax.swing.JButton;
 15 import javax.swing.JFrame;
 16 import javax.swing.JPanel;
 17 import javax.swing.JScrollPane;
 18 import javax.swing.JTextArea;
 19 import javax.swing.ScrollPaneConstants;
 20
 21 public class Server extends JFrame implements ActionListener {
 22     JTextArea input;//显示信息
 23     JTextArea output;//输入信息
 24     JButton close;//关闭按钮
 25     JButton send;//发动按钮
 26     JScrollPane top = new JScrollPane();//放input的滚动面板
 27     JPanel medium, bottom;//放output,关闭按钮,发送按钮
 28
 29     String inMessage, outMessage;
 30     ServerSocket server = null;
 31     Socket you = null;
 32     String s = null;
 33     PrintWriter pw = null;
 34     BufferedReader br = null;
 35
 36     /**
 37      * @param args
 38      */
 39     public Server() {
 40         super();
 41         setTitle("服务器");
 42         setVisible(true);
 43         setBounds(600, 150, 350, 400);
 44         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 45
 46         top = new JScrollPane();
 47         top.setPreferredSize(new Dimension(300, 200));
 48         top.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_AS_NEEDED);
 49         output = new JTextArea(6, 25);
 50         top.setViewportView(output);
 51
 52         medium = new JPanel();
 53         medium.setPreferredSize(new Dimension(300, 120));
 54         input = new JTextArea(4, 27);
 55         medium.add(input);
 56
 57         bottom = new JPanel();
 58         bottom.setPreferredSize(new Dimension(300, 60));
 59         close = new JButton("关闭");
 60         close.addActionListener(this);
 61         send = new JButton("发送");
 62         send.addActionListener(this);
 63         bottom.add(close);
 64         bottom.add(send);
 65
 66         getContentPane().add(top, BorderLayout.NORTH);
 67         getContentPane().add(medium, BorderLayout.CENTER);
 68         getContentPane().add(bottom, BorderLayout.SOUTH);
 69     }
 70
 71     public static void main(String[] args) {
 72         // TODO Auto-generated method stub
 73         Server sever = new Server();
 74         sever.run();
 75     }
 76
 77     public void run() {
 78
 79         try {
 80
 81             server = new ServerSocket(2222);
 82         } catch (IOException e) {
 83             System.out.println(e);
 84         }
 85         try {
 86             you = server.accept();
 87             br = new BufferedReader(new InputStreamReader(you.getInputStream()));
 88             pw = new PrintWriter(you.getOutputStream(), true);
 89             while ((inMessage = br.readLine()) != null) {
 90                 output.append("客户端说:" + inMessage + "\n");
 91             }
 92         } catch (Exception e) {
 93         }
 94
 95     }
 96
 97     @Override
 98     public void actionPerformed(ActionEvent e) {
 99         // TODO Auto-generated method stub
100         if (close.hasFocus()) {
101             try {
102                 server.close();
103                 System.out.println("服务器已关闭");
104             } catch (IOException e1) {
105                 // TODO Auto-generated catch block
106                 e1.printStackTrace();
107             }
108         }
109         if (send.hasFocus()) {
110             outMessage = input.getText();
111             input.setText(null);
112             output.append("服务器说:" + outMessage + "\n");
113             pw.println(outMessage);
114             pw.flush();
115         }
116     }
117
118 }

时间: 2024-10-25 07:03:35

Java基于socket的进程间通信 聊天小程序的相关文章

Netty学习——基于netty实现简单的客户端聊天小程序

Netty学习——基于netty实现简单的客户端聊天小程序 效果图,聊天程序展示 (TCP编程实现) 后端代码: package com.dawa.netty.chatexample; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.EventLoopGroup; import io.netty.channel.nio.NioEven

java socket控制台版本聊天室程序源码下载

原文:java socket控制台版本聊天室程序源码下载 代码下载地址:http://www.zuidaima.com/share/1550463257578496.htm java socket控制台版本聊天室程序源码下载,学习的时候写的,适合学习java基础 java网络编程基础用 标签: java socket 控制台 聊天室 源码话题: 网络编程 java socket控制台版本聊天室程序源码下载,布布扣,bubuko.com

基于Socket的Android聊天室

1        基于Socket的Android聊天室 Socket通信是网络通信中最常用的技术之一,通过Socket建立的可靠连接,可以让多个终端与服务器保持通信,最典型的应用是建立一个多人聊天程序.本实例使用ServerSocket建立聊天服务器.将服务器端所有的通讯线程保存到一个集合当中,当有用户发来数据,则转发给所有用户,实现聊天室效果.Android端通过使用Socket建立客户端链接,并且在AsyncTask中执行网络读写的任务,将用户输入的内容发送到服务器,并接收服务器发来的数据

Netty 聊天小程序

这节讲解基于 Netty 快速实现一个聊天小程序. 一.服务端 1. SimpleChatServerHandler(处理器类) 该类主要实现了接收来自客户端的消息并转发给其他客户端. 1 /** 2 * 服务端处理器 3 */ 4 public class SimpleChatServerHandler extends SimpleChannelInboundHandler<String> { 5 public static ChannelGroup channels 6 = new Def

小程序版聊天室|聊天小程序|仿微信聊天界面小程序

仿微信聊天小程序weChatRoom案例,一款基于微信小程序开发的聊天室实战项目.很早之前就有开发过一个h5版聊天室,最近又在原先思路的基础上开发了个小程序版聊天室,功能效果非常接近微信聊天,实现了消息.表情发送,小程序表情解析,图片.视频上传预览,打赏.红包等微交互场景.整体界面风格及效果挺不错哒. ◆ 先睹为快 ◆ 项目中用到的弹窗插件,是自己开发的小程序弹窗组件wcPop: <!-- <>引入弹窗模板.Start --><import src="/utils/

Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解

说明:Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解,加密算法,是现在每个软件项目里必须用到的内容. 广泛应用在包括了用户登入.数字签名.数据传输等多个场合.今天我把常见的加密算法全部整理在这里,供大家学习参考. 首先,大家要知道加密算法能干什么,利用加密算法来对数据通信的过程进行加密传输是一种最常见的安全手段.利用该手段能够达到一下三个目的: 1.数据保密性,防止用户数据被窃取或泄露: 2.数据完整性,防止用户传输的数据被篡改: 3.通信双方身份确认,确保数据来源合法: 常见

C语言 linux环境基于socket的简易即时通信程序

转载请注明出处:http://www.cnblogs.com/kevince/p/3891033.html   By Kevince 最近在看linux网络编程相关,现学现卖,就写了一个简易的C/S即时通信程序,代码如下: head.h 1 /*头文件,client和server编译时都需要使用*/ 2 #include <unistd.h> 3 #include <stdio.h> 4 #include <sys/types.h> 5 #include <sys

java几个容易出错的小程序

把基本知识过了一遍,发现了几个自己容易 出错的小程序,记录下来.... 1,关于try-catch异常 1,关于try-catch异常 package chapter5; public class p101 { public static void main(String args[]) { int a[]=new int[3]; try{ a[0]=1; a[1]=2; a[2]=3; a[3]=3/0; }catch(ArrayIndexOutOfBoundsException e) { S

基于XMPP的IOS聊天客户端程序(XMPP服务器架构)

最近看了关于XMPP的框架,以文本聊天为例,需要发送的消息为: <message type="chat" from="[email protected]" to="[email protected]">          <body>helloWord</body>      </message> 基中from是从哪个用户发送的消息,to是发给谁的消息,XMPP的用户都是以邮箱形式.body就是我们