import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket; /** * 服务端 * 需求:多个客户端连接同一个服务端 * @author Sam * */ public class MultipleServer { /** 编码 */ public static final String ENCODING = "UTF-8"; /** * @param args */ public static void main(String[] args) { try { // 创建一个服务端ServerSocket,监听指定端口的请求 ServerSocket ss = new ServerSocket(10000); System.out.println("Server 等待客户端接入..."); while (true) { // 一直循环监听客户端请求 Socket socket = ss.accept(); // 开启一个新线程处理Socket请求 new Thread(new AsynSocketTask(socket)).start(); } } catch (IOException e) { e.printStackTrace(); } } /** * 用于处理Socket请求的任务类 * */ static class AsynSocketTask implements Runnable { private Socket socket; private BufferedReader buffReader; private BufferedWriter buffWriter; public AsynSocketTask(Socket socket) { try { this.socket = socket; // 获取Socket中的输入输出流,并使用带缓冲区的字符流 buffReader = new BufferedReader( new InputStreamReader(socket.getInputStream(), ENCODING)); buffWriter = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(), ENCODING)); } catch (IOException e) { e.printStackTrace(); } } @Override public void run() { handleSocketRequest(); } /** * 处理客户端请求 */ private void handleSocketRequest() { try { //////////////// 读操作 ////////////////// // 获取客户端数据 String line = null; StringBuilder sBuilder = new StringBuilder(); // 一行一行的读 while ( (line=buffReader.readLine()) != null ) { if (line.indexOf("eof") != -1) {// 读到结束标记,则跳出循环 break; } sBuilder.append(line); } System.out.println("Server 来自客户端的数据:"+ sBuilder.toString()); //////////////// 写操作 ////////////////// // 读完之后,往客户端写一句 buffWriter.write("Hello Client!"); buffWriter.newLine();// 写一个换行符 buffWriter.write("eof");// 写一个结束标记符 buffWriter.newLine(); buffWriter.close();// 关闭该流的同时,也会释放与之关联的所有资源 buffReader.close(); socket.close(); } catch (IOException e) { e.printStackTrace(); } } } }
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.Socket; /** * 客户端 * @author Sam * */ public class MultipleClient { /** 编码 */ public static final String ENCODING = "UTF-8"; /** * @param args */ public static void main(String[] args) { try { // 与服务端建立连接(服务端主机号,服务端监听的端口号) Socket socket = new Socket("127.0.0.1" , 10000); // 获取Socket中的输入输出流,并使用带缓冲区的字符流 BufferedWriter buffWriter = new BufferedWriter( new OutputStreamWriter(socket.getOutputStream(), ENCODING)); BufferedReader buffReader = new BufferedReader( new InputStreamReader(socket.getInputStream(), ENCODING)); /////////////// 写操作 /////////////// // 往服务端写数据 buffWriter.write("Hello Server!"); buffWriter.newLine();// 写一个换行符 buffWriter.write("eof");// 写一个结束标记符 buffWriter.newLine(); buffWriter.flush(); /////////////// 读操作 /////////////// // 写完之后,读取服务端返回的数据 socket.setSoTimeout(10*1000);// 设置超时时长10秒 String line = null; StringBuilder sBuilder = new StringBuilder(); // 一行一行的读 while ( (line=buffReader.readLine()) != null ) { if (line.indexOf("eof") != -1) {// 读到结束标记,则跳出循环 break; } sBuilder.append(line); } buffWriter.close(); buffReader.close(); socket.close(); System.out.println("Client 来自服务端的数据:" + sBuilder.toString()); } catch (IOException e) { e.printStackTrace(); } } }
您还没有登录,请您登录后再发表评论
本教程将深入探讨Java中的Socket编程,特别是如何实现网上广播功能。网上广播允许一个设备向网络上的所有设备发送数据,无需预先知道接收者的具体地址。 首先,让我们了解什么是Socket。Socket在计算机网络中是一种...
Socket编程是一种基础的网络通信机制,允许两个应用程序通过网络交换数据。 首先,让我们深入了解一下Java中的Socket。在Java中,Socket是`java.net.Socket`类的一个实例,它代表了TCP协议中的一个连接。创建Socket...
在Java编程语言中,Socket是实现网络通信的基本组件。"Java Socket学习---单线程阻塞"这个主题主要探讨了如何使用Java的Socket类进行单线程的阻塞式通信,这种模式通常用于简单的客户端-服务器应用。在这个场景中,...
通过对`EchoServer.java`、`SocketUtils.java`和`EchoClient.java`的分析,我们可以深入理解Java Socket编程以及多线程阻塞模式在实际应用中的实现。这对于开发网络应用程序,尤其是需要处理大量并发连接的服务端...
本资料“Java TCP-IP Socket编程-卡尔弗特.pdf”旨在深入探讨如何利用Java语言进行TCP/IP套接字编程,构建稳定、高效的数据传输通道。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,而...
在这个主题中,我们将深入探讨Socket编程的基本概念、主要类和方法以及如何通过示例来应用它们。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。而Socket是TCP/IP协议族的一...
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
总的来说,要深入学习Java3D和Socket编程,你需要理解3D图形学的基本原理,熟悉Java的网络编程接口,同时还需要一定的编程实践来磨练技能。通过阅读提供的文档和教程,你可以逐步掌握这两个领域的核心知识。
本篇文章将深入讲解如何通过三步学习Java Socket编程。 **第一步:理解Socket** Socket,又称为“套接字”,是网络通信中的一个抽象概念,它封装了IP地址和端口号,是网络通信链路的句柄。在Java中,Socket和...
在Java中,Socket API提供了丰富的类库支持,使得开发人员能够轻松实现网络编程。 - **客户端Socket**:用于发起连接请求,与服务端建立连接。 - **服务端Socket**:用于监听客户端的连接请求,并接收或发送数据。 ...
在本文中,我们将深入探讨Java Socket编程的概念、原理以及如何使用它来实现客户端-服务器通信。 首先,我们需要了解Socket的基本概念。Socket可以看作是网络上的一个端点,它允许两个运行在不同机器上的程序通过...
在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和客户端,并讨论如何通过多线程支持多个客户端同时在线。 首先,Socket是网络上的两个进程间通信的端点,它允许数据在网络中双向...
《Java TCP/IP Socket编程》(原书第2版)是一本深入探讨Java中Socket编程的专著,旨在帮助读者理解并掌握如何在Java环境中利用TCP/IP协议进行网络通信。本书不仅详细介绍了Socket的工作原理,还提供了丰富的示例...
这个库允许开发者在Java应用程序中实现低级别的CAN数据帧收发,从而无需深入理解底层操作系统或C/C++编程。CAN总线是一种广泛应用于汽车、工业自动化和其他嵌入式系统中的实时通信网络。 标题"java-socketcan"指的...
### 华科-计算机网络实验报告-Java_Socket编程-网络组建实验 #### 实验概述 本实验旨在通过具体的编程实践加深学生对于计算机网络中应用层和传输层的理解,特别是Socket编程的应用及其在网络通信中的作用。实验以...
Java Socket编程是网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。在Java中,Socket是基于TCP协议的,提供了一种可靠的、基于字节流的双向通信方式。本资料包含的"Java源码:Socket编程"是一个...
Java TCPIP Socket编程是Java开发语言在后端服务中实现网络通信的重要技术,它基于Apache等开源库提供了丰富的API来创建高效、可靠的网络连接。本章将深入探讨Socket编程的基本概念和实现方法。 1. 计算机网络、...
在Java中,我们可以使用`java.net.Socket`类和`java.net.ServerSocket`类来实现TCP Socket编程。`ServerSocket`用于监听客户端的连接请求,`Socket`则代表一个客户端连接。以下是一个简单的TCP服务器端和客户端示例...
通过深入学习和实践这个Java的Socket编程课件,开发者将能够熟练掌握如何在Java中创建可靠的网络通信,为开发高性能的网络应用程序奠定坚实基础。无论是初学者还是经验丰富的开发者,都应该对Socket编程有深入的理解...
相关推荐
本教程将深入探讨Java中的Socket编程,特别是如何实现网上广播功能。网上广播允许一个设备向网络上的所有设备发送数据,无需预先知道接收者的具体地址。 首先,让我们了解什么是Socket。Socket在计算机网络中是一种...
Socket编程是一种基础的网络通信机制,允许两个应用程序通过网络交换数据。 首先,让我们深入了解一下Java中的Socket。在Java中,Socket是`java.net.Socket`类的一个实例,它代表了TCP协议中的一个连接。创建Socket...
在Java编程语言中,Socket是实现网络通信的基本组件。"Java Socket学习---单线程阻塞"这个主题主要探讨了如何使用Java的Socket类进行单线程的阻塞式通信,这种模式通常用于简单的客户端-服务器应用。在这个场景中,...
通过对`EchoServer.java`、`SocketUtils.java`和`EchoClient.java`的分析,我们可以深入理解Java Socket编程以及多线程阻塞模式在实际应用中的实现。这对于开发网络应用程序,尤其是需要处理大量并发连接的服务端...
本资料“Java TCP-IP Socket编程-卡尔弗特.pdf”旨在深入探讨如何利用Java语言进行TCP/IP套接字编程,构建稳定、高效的数据传输通道。 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输协议,而...
在这个主题中,我们将深入探讨Socket编程的基本概念、主要类和方法以及如何通过示例来应用它们。 首先,TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。而Socket是TCP/IP协议族的一...
《Java TCP/IP Socket编程(原书第2版)》基于TCP/IP Socket相关原理,对如何在Java中进行Socket编程作了深入浅出的介绍。《Java TCP/IP Socket编程(原书第2版)》内容简明扼要,条理清晰,并在讲解相应的概念或编程...
总的来说,要深入学习Java3D和Socket编程,你需要理解3D图形学的基本原理,熟悉Java的网络编程接口,同时还需要一定的编程实践来磨练技能。通过阅读提供的文档和教程,你可以逐步掌握这两个领域的核心知识。
本篇文章将深入讲解如何通过三步学习Java Socket编程。 **第一步:理解Socket** Socket,又称为“套接字”,是网络通信中的一个抽象概念,它封装了IP地址和端口号,是网络通信链路的句柄。在Java中,Socket和...
在Java中,Socket API提供了丰富的类库支持,使得开发人员能够轻松实现网络编程。 - **客户端Socket**:用于发起连接请求,与服务端建立连接。 - **服务端Socket**:用于监听客户端的连接请求,并接收或发送数据。 ...
在本文中,我们将深入探讨Java Socket编程的概念、原理以及如何使用它来实现客户端-服务器通信。 首先,我们需要了解Socket的基本概念。Socket可以看作是网络上的一个端点,它允许两个运行在不同机器上的程序通过...
在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和客户端,并讨论如何通过多线程支持多个客户端同时在线。 首先,Socket是网络上的两个进程间通信的端点,它允许数据在网络中双向...
《Java TCP/IP Socket编程》(原书第2版)是一本深入探讨Java中Socket编程的专著,旨在帮助读者理解并掌握如何在Java环境中利用TCP/IP协议进行网络通信。本书不仅详细介绍了Socket的工作原理,还提供了丰富的示例...
这个库允许开发者在Java应用程序中实现低级别的CAN数据帧收发,从而无需深入理解底层操作系统或C/C++编程。CAN总线是一种广泛应用于汽车、工业自动化和其他嵌入式系统中的实时通信网络。 标题"java-socketcan"指的...
### 华科-计算机网络实验报告-Java_Socket编程-网络组建实验 #### 实验概述 本实验旨在通过具体的编程实践加深学生对于计算机网络中应用层和传输层的理解,特别是Socket编程的应用及其在网络通信中的作用。实验以...
Java Socket编程是网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。在Java中,Socket是基于TCP协议的,提供了一种可靠的、基于字节流的双向通信方式。本资料包含的"Java源码:Socket编程"是一个...
Java TCPIP Socket编程是Java开发语言在后端服务中实现网络通信的重要技术,它基于Apache等开源库提供了丰富的API来创建高效、可靠的网络连接。本章将深入探讨Socket编程的基本概念和实现方法。 1. 计算机网络、...
在Java中,我们可以使用`java.net.Socket`类和`java.net.ServerSocket`类来实现TCP Socket编程。`ServerSocket`用于监听客户端的连接请求,`Socket`则代表一个客户端连接。以下是一个简单的TCP服务器端和客户端示例...
通过深入学习和实践这个Java的Socket编程课件,开发者将能够熟练掌握如何在Java中创建可靠的网络通信,为开发高性能的网络应用程序奠定坚实基础。无论是初学者还是经验丰富的开发者,都应该对Socket编程有深入的理解...