查看本章节

查看作业目录


需求说明:

应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能

实现思路:

  1. 创建 Java 项目,在项目中创建服务端类 ChatServerThread 和客户端类 ChatClientThread
  2. 创建 Java 项目,在项目中创建发送类 SendImpl 和接收类 ReceiveImpl
  3. ChatServerThread 类中,监听 8888 端口,并开启发送和接收线程
  4. ChatClientThread 类中,连接 8888 端口,并开启发送和接收线程
  5. SendImpl 类中,开启线程循环,发送用户输入的信息
  6. ReceiveImpl 类中,开启线程循环,接收网络发送过来的数据

实现代码:

服务端类 ChatServerThread

import java.net.Socket;

public class ChatServerThread {

	public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1", 8888);
SendImpl sendImpl = new SendImpl(socket);
// 发送的线程
new Thread(sendImpl).start();
// 接收的线程
ReciveImpl reciveImpl = new ReciveImpl(socket);
new Thread(reciveImpl).start();
}
}

客户端类 ChatClientThread

import java.net.ServerSocket;
import java.net.Socket; public class ChatClientThread {
public static void main(String[] args) throws Exception {
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
SendImpl sendImpl = new SendImpl(socket);
new Thread(sendImpl).start();
ReciveImpl reciveImpl = new ReciveImpl(socket);
new Thread(reciveImpl).start();
}
}

发送类 SendImpl

import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner; public class SendImpl implements Runnable {
private Socket socket; public SendImpl(Socket socket) {
this.socket = socket;
} @Override
public void run() {
Scanner scanner = new Scanner(System.in);
while (true) {
try {
OutputStream outputStream = socket.getOutputStream();
String string = scanner.nextLine();
outputStream.write(string.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }

接收类 ReceiveImpl

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket; public class ReciveImpl implements Runnable {
private Socket socket; public ReciveImpl(Socket socket) {
this.socket = socket;
// TODO Auto-generated constructor stub
} @Override
public void run() {
while (true) {
try {
InputStream inputStream = socket.getInputStream();
byte[] b = new byte[1024];
int len = inputStream.read(b);
System.out.println("收到消息:" + new String(b, 0, len)); } catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} }

编写Java程序,应用客户端和服务端通过 Eclipse 控制台的输入和显示实现简易的聊天功能的更多相关文章

  1. Java 实现Redis客户端,服务端

    Java 实现Redis客户端,服务端 1.Java实现Redis发布订阅 1.1实例 2.[Redis]Java实现redis消息订阅/发布(PubSub) 3.java实现 redis的发布订阅 ...

  2. java网络编程客户端与服务端原理以及用URL解析HTTP协议

    常见客户端与服务端 客户端: 浏览器:IE 服务端: 服务器:web服务器(Tomcat),存储服务器,数据库服务器. (注:会用到Tomact服务器,在webapps下有一个自己创建的目录myweb ...

  3. Java网络编程(客户端和服务端原理)

    运行下面的程序,浏览器端输入自己主机的IP地址+端口号(8888),会看到服务器返回的数据内容,Eclipse控制台会打印显示收到的信息, 通过我们自定义的服务器,可以看到浏览器端向服务器发送的请求信 ...

  4. java实现xml-rpc客户端和服务端

    客户端代码: package test_xmlrpc.test; import java.net.URL;import java.util.ArrayList;import java.util.Lis ...

  5. UDP网络程序,客户端和服务端交互原理

    创建一个udp客户端程序的流程是简单,具体步骤如下: 创建客户端套接字 发送/接收数据 关闭套接字 UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实 ...

  6. 编写Java程序_银行终端服务系统

    目录 一.General description 总体概述 二.About the Project 项目介绍 三.Soft function 软件功能 四.UI Model Use Case Diag ...

  7. 二、网络编程-socket之TCP协议开发客户端和服务端通信

    知识点:之前讲的udp协议传输数据是不安全的,不可靠不稳定的,tcp协议传输数据安全可靠,因为它们的通讯机制是不一样的.udp是用户数据报传输,也就是直接丢一个数据包给另外一个程序,就好比寄信给别人, ...

  8. Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序

    演示TCP的传输的客户端和服务端的互访 需求:客户端给服务端发送数据,服务端收到后,给客户端反馈信息. 客户端: 1.建立Socket服务,指定要连接方朵和端口 2.获取Socket流中的输出流,将数 ...

  9. 编写Java程序,实现客户端向服务端上传文件的功能

    查看本章节 查看作业目录 需求说明: 实现客户端向服务端上传文件的功能 当启动服务端后,运行客户端程序,系统提示客户在客户端输入上传文件的完整路径.当客户在客户端输入完成后,服务端实现文件上传 实现思 ...

随机推荐

  1. Gradle插件详解

    参考[1]Gradle 插件       [2]修改 Gradle 插件(Plugins)的下载地址(repositories)

  2. Java 8实现BASE64编解码

    Java一直缺少BASE64编码 API,以至于通常在项目开发中会选用第三方的API实现.但是,Java 8实现了BASE64编解码API,它包含到java.util包.下面我会对Java 8的BAS ...

  3. JDK1.8新特性(一): 接口的默认方法default

    前言 今天在学习mysql分区优化时,发现一个博客专家大神,对其发布的文章简单学习一下: 一:简介 我们通常所说的接口的作用是用于定义一套标准.约束.规范等,接口中的方法只声明方法的签名,不提供相应的 ...

  4. Mysql 常见报错和疑问汇总

    1.初始化数据库的时候报错 error while loading shared libraries: libstdc++.so.5: cannot open shared object file:  ...

  5. OpenStack之五: image镜像服务(端口9292)

    官网地址:https://docs.openstack.org/glance/stein/install/install-rdo.html #:创建glance库,并授权 MariaDB [(none ...

  6. 【力扣】122. 买卖股票的最佳时机 II

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  7. 论文翻译:2021_A Perceptually Motivated Approach for Low-complexity, Real-time Enhancement of Fullband Speech

    论文地址:一种低复杂度实时增强全频带语音的感知激励方法 论文代码 引用格式:A Perceptually Motivated Approach for Low-complexity, Real-tim ...

  8. 论文翻译:2021_Low-Delay Speech Enhancement Using Perceptually Motivated Target and Loss

    论文地址:使用感知动机目标和损失的低延迟语音增强 引用格式:Zhang X, Ren X, Zheng X, et al. Low-Delay Speech Enhancement Using Per ...

  9. Python pyecharts绘制柱状图

    本文摘抄至https://05x-docs.pyecharts.org/#/zh-cn/charts_base?id=bar%ef%bc%88%e6%9f%b1%e7%8a%b6%e5%9b%be%e ...

  10. bjdctf_2020_babyrop2(没有成功拿到shell)

    看到程序先例行检查一下 可以看到开启了canary和nx保护,需要注意的是这个acnary 将程序放入ida中shift+f12 没有关键性函数.我们进入main函数中 在main的gift程序里面我 ...