一个客户端,一个服务端,客户端可以发消息到服务端
客户端代码client:
package com.lw.socket.client; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.Socket; public class Client { public static final String IP = "localhost";// 服务器地址 public static final int PORT = 8000;// 服务器端口号 public static void main(String[] args) { Client client = new Client(); client.handler(); } private void handler() { try { // 实例化一个Socket,并指定服务器地址和端口 Socket client = new Socket(IP, PORT); // 开启两个线程,一个负责读,一个负责写 new Thread(new ClientReadThread(client)).start(); new Thread(new ClientWriteThread(client)).start(); } catch (Exception e) { e.printStackTrace(); } } /** * 处理读操作的线程 */ class ClientReadThread implements Runnable { private Socket client; public ClientReadThread(Socket client) { this.client = client; } @Override public void run() { DataInputStream dis = null; try { while (true) { // 读取客户端数据 dis = new DataInputStream(client.getInputStream()); String reciver = dis.readUTF(); System.out.println("服务器端返回过来的是:" + reciver); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (dis != null) { dis.close(); } if (client != null) { client = null; } } catch (IOException e) { e.printStackTrace(); } } } } /** * 处理写操作的线程 */ class ClientWriteThread implements Runnable { private Socket client; public ClientWriteThread(Socket client) { this.client = client; } @Override public void run() { DataOutputStream dos = null; BufferedReader br = null; try { while (true) { // 向客户端回复信息 dos = new DataOutputStream(client.getOutputStream()); System.out.print("客户端请输入:\r"); // 键盘录入 br = new BufferedReader(new InputStreamReader(System.in)); String send = br.readLine(); // 发送数据 dos.writeUTF(send); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (dos != null) { dos.close(); } if (br != null) { br.close(); } if (client != null) { client = null; } } catch (IOException e) { e.printStackTrace(); } } } } }
服务端代码server:
package com.lw.socket.server; import java.io.BufferedReader; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetAddress; import java.net.ServerSocket; import java.net.Socket; public class Server { public static final int PORT = 8000;// 监听的端口号 public static void main(String[] args) { Server server = new Server(); server.init(); } public void init() { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(PORT); System.out.println("启动服务器...."); int count = 0; while (true) { count++; Socket client = serverSocket.accept(); // 等待客户端链接 System.out.println("客户端:"+InetAddress.getLocalHost()+"已连接到服务器" + ",连接数量:" + count); // 一个客户端连接就开户两个线程处理读写 new Thread(new ServerReadThread(client)).start(); new Thread(new ServerWriteThread(client)).start(); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (serverSocket != null) { serverSocket.close(); } } catch (IOException e) { e.printStackTrace(); } } } /** * 处理读操作的线程 */ class ServerReadThread implements Runnable { private Socket client; public ServerReadThread(Socket client) { this.client = client; } @Override public void run() { DataInputStream dis = null; try { while (true) { // 读取客户端数据 dis = new DataInputStream(client.getInputStream()); String reciver = dis.readUTF(); System.out.println("客户端发过来的内容:" + reciver); } } catch (Exception e) { e.printStackTrace(); } finally { try { if (dis != null) { dis.close(); } if (client != null) { client = null; } } catch (IOException e) { e.printStackTrace(); } } } } /** * 处理写操作的线程 */ class ServerWriteThread implements Runnable { private Socket client; public ServerWriteThread(Socket client) { this.client = client; } @Override public void run() { DataOutputStream dos = null; BufferedReader br = null; try { while (true) { dos = new DataOutputStream(client.getOutputStream()); // 向客户端回复信息 System.out.print("服务端请输入:\r"); br = new BufferedReader(new InputStreamReader(System.in)); // 键盘录入 String send = br.readLine(); dos.writeUTF(send); // 发送数据 } } catch (Exception e) { e.printStackTrace(); } finally { try { if (dos != null) { dos.close(); } if (br != null) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } } } }
相关推荐
### Java在Client-Server网络中的应用详解 #### 一、Java网络应用模型 随着Java语言的广泛应用及其与互联网的高度融合,Java已经成为构建现代信息系统的重要工具之一。Java的特点,如跨平台性、面向对象的设计理念...
Socket.IO的核心组件包括Server端和Client端。在Node.js环境中,你可以安装`socket.io`模块来创建服务器端实例。服务器端可以监听特定的事件,并向连接的客户端广播消息。在客户端,你可以使用`socket.io-client`库...
Java Socket编程是网络通信的核心部分,它允许两个网络应用程序通过TCP/IP协议进行数据交换。在Java中,Socket类和ServerSocket类提供了客户端-服务器模型的实现。本教程将深入探讨如何使用Java进行Socket编程。 ...
本文将详细解析"client-server-socket.rar_Server"中的核心知识点,包括服务器端如何为客户端提供数学计算服务和时间查询服务,以及在实现这些服务时涉及到的Socket编程。 首先,我们来理解客户端-服务器模型。这种...
客户端-服务器(Client-server)架构中的套接字(Socket)技术是网络编程中的核心概念,主要涉及TCP(传输控制协议)通信。TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,它为应用程序提供了双向通信的...
Java Socket 模拟 Ftp Server/Client
可能使用的编程语言有Python(使用socket库)、Java(使用Socket类)或其他支持网络编程的语言。 2. **客户端代码**:客户端程序设计为用户界面友好,允许用户输入消息并发送,同时接收并展示服务器传来的消息。它...
主要介绍了基于Java的Socket多客户端Client-Server聊天程序的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
SocketClient-Server是一个基于Java实现的简单客户端-服务器通信模型,它展示了如何使用Socket编程进行网络数据传输。在Java中,Socket是TCP/IP协议的一种实现,允许两台计算机通过网络进行双向通信。以下是对这个...
标题"A-basic-client-server-application-in-java.zip"暗示了我们将会探讨一个基础的Java客户端-服务器应用程序。这个压缩包包含了一个教程(Sockets_Tutorial.html)和两个源代码文件(tcpClient.java和tcpServer....
- 连接到服务器:`Socket socket = IO.socket("http://your-server-url:port");` - 注册事件监听器:例如,`socket.on(Socket.EVENT_CONNECT, new Emitter.Listener() {...});` 用于监听连接成功事件。 - 发送和...
在这个"Client-Server-App.zip_between_client"中,我们看到的是一段实现客户端与服务器间握手协议的代码示例。下面我们将深入探讨这个应用的核心知识点。 1. **客户端-服务器架构**: 客户端-服务器模型是分布式...
这就是经典的C/S(Client/Server)模型。 在"服务器.jar"中,很可能包含了一个Java编写的网络服务器程序。这个程序可能实现了TCP或UDP协议,处理来自客户端的连接请求,并进行数据交换。TCP提供的是面向连接的、...
Socket分为客户端(Socket Client)和服务器端(Socket Server),它们共同构成了基于TCP/IP协议的通信模型。本篇文章将详细探讨Android环境下如何进行Socket Client端和Socket Server端的数据发送与接收。 1. **...
本资源"Telnet-Server-Client.rar"包含了一个用Java实现的`Telnet`服务器和客户端,这对于理解网络编程和`Socket`通信具有很高的学习价值。 首先,我们要了解`Java`中的`Socket`编程。`Socket`是网络通信的基础,它...
该存储库包含用Java语言编写的Socket.IO客户端实现。 如果您不了解socket.io,则它基本上是一个旨在提供实时,双向和基于事件的通信的框架。 您可以访问以了解更多信息。 安装 您可以使用以下方法安装该库: Maven ...
下面将详细解释Java Socket的工作原理、如何创建Server和Client以及如何在两个端点之间传递数据。 1. **Java Socket基础** Java Socket基于TCP/IP协议,提供了低级别的、面向连接的、可靠的字节流通信。它允许两个...
通常,一个完整的Java Socket示例项目会包含多个文件,如`Server.java`(服务器端)、`Client.java`(客户端)以及可能的配置或测试文件。这些文件将展示如何设置Socket连接、处理数据传输,以及优雅地关闭连接。 ...
标题中的“Based-on-the-TCP-client-and-server.rar_TCP中转_The Client_java Tcp”表明这是一个关于TCP协议的项目,特别关注TCP中转功能,客户端(The Client)是用Java语言实现的。这个项目可能涉及创建一个服务器...