package com.yuan.socket; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * Created by YUAN on 2016-09-17. */ public class TalkServer4Byte { private ServerSocket server; private int port = 5020; public TalkServer4Byte() { try { server = new ServerSocket(port); } catch (IOException e) { } } public void talk() { System.out.println("监控端口:" + port); Socket socket = null; while (true) { try { // 阻塞等待,每接收到一个请求就创建一个新的连接实例 socket = server.accept(); System.out.println("连接客户端地址:" + socket.getRemoteSocketAddress()); // 装饰流BufferedReader封装输入流(接收客户端的流) BufferedInputStream bis = new BufferedInputStream( socket.getInputStream()); DataInputStream dis = new DataInputStream(bis); byte[] bytes = new byte[1]; // 一次读取一个byte String ret = ""; while (dis.read(bytes) != -1) { ret += bytesToHexString(bytes) + " "; if (dis.available() == 0) { //一个请求 doSomething(ret); } } } catch (IOException e) { System.out.println(e.getMessage()); } finally { try { socket.close(); } catch (IOException e) { System.out.println(e.getMessage()); } } } } public static void doSomething(String ret) { System.out.println(ret); } public static String bytesToHexString(byte[] src) { StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; } for (int i = 0; i < src.length; i++) { int v = src[i] & 0xFF; String hv = Integer.toHexString(v); if (hv.length() < 2) { stringBuilder.append(0); } stringBuilder.append(hv); } return stringBuilder.toString(); } public static String BytesHexString(byte[] b) { String ret = ""; for (int i = 0; i < b.length; i++) { String hex = Integer.toHexString(b[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } ret += hex.toUpperCase(); } return ret; } public static void main(String[] args) { TalkServer4Byte server = new TalkServer4Byte(); server.talk(); } }
package com.yuan.socket; import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.InetSocketAddress; import java.net.Socket; import java.net.SocketAddress; /** * Created by YUAN on 2016-09-17. */ public class TalkClient4Byte { private Socket socket; private SocketAddress address; public TalkClient4Byte() { try { socket = new Socket(); address = new InetSocketAddress("127.0.0.1", 5020); socket.connect(address, 1000); } catch (IOException e) { e.printStackTrace(); } } public void talk() { try { //使用DataInputStream封装输入流 InputStream os = new DataInputStream(System.in); byte [] b = new byte[1]; DataOutputStream dos = new DataOutputStream(socket.getOutputStream()); while (-1 != os.read(b)) { dos.write(b); // 发送给客户端 } dos.flush(); dos.close(); } catch (IOException e) { e.printStackTrace(); } finally { try { socket.close(); } catch (IOException e) { } } } public static void main(String[] args) { TalkClient4Byte client = new TalkClient4Byte(); client.talk(); } }
相关推荐
总结来说,这个Java Socket字节流传输示例展示了如何创建一个简单的服务器,监听客户端的连接,接收并处理客户端发送的字节数据。通过使用字节流,我们可以处理任何类型的数据,无论是文本、图像还是其他二进制数据...
Java基于Socket文件传输示例是一种常见的网络编程应用场景,主要用于实现两个网络节点间的文件共享和交换。Socket编程是Java网络通信的基础,它提供了低级别的、面向连接的、双向的数据传输通道。在这个示例中,我们...
在"Java Socket 视频流转发Socket"这个主题中,我们将深入探讨如何使用Java Socket来处理视频流的传输。 首先,让我们了解什么是ServerSocket。在Java中,`java.net.ServerSocket`类是服务器端使用的,它监听特定...
Java的`java.io`包提供了大量预定义的字节流类,例如`FileInputStream`和`FileOutputStream`用于文件操作,`SocketInputStream`和`SocketOutputStream`则涉及网络通信。 在`ByteIO.java`文件中,我们可以预期看到...
这个简单的示例展示了如何使用Java的Socket API进行文件传输,但实际应用中可能需要考虑更多的因素,比如错误处理、断线重连、多线程处理多个客户端、安全性(如SSL/TLS加密)、文件分块传输以优化性能等。...
文件传输基于Socket的核心在于将文件拆分成字节流,通过Socket的输入/输出流进行传输。首先,服务端需要读取文件并将其转换为字节流,然后通过Socket的OutputStream发送。客户端接收时,通过Socket的InputStream读取...
本教程将详细讲解如何使用Java实现字节流与图片之间的转换,这对于在网络上传输或者存储图片等二进制数据至关重要。 首先,我们需要了解Java中的字节流。Java提供了两种类型的字节流:输入流(InputStream)和输出...
- 打开本地文件并读取其内容,将其转换为字节流,然后通过Socket的输出流向服务器发送。 - 发送完成后关闭Socket和相关的流。 在"java示例程序4-传文件"中,可能包含了实现以上逻辑的Java代码。这些代码会展示...
Java Socket是Java编程语言中用于网络通信的核心API,它提供了低级别的、面向连接的、可靠的、基于字节流的通信。在本示例中,"Java Socket示例"是一个在NetBeans环境中开发的简单聊天工具,它利用了Socket来实现...
在Java编程中,Socket是实现网络通信的基础,它提供了低级别的、面向连接的、可靠的字节流通信。在这个"Java Socket 通信服务与客户端完整示例"中,我们可以深入理解Socket通信的原理以及如何在实际项目中应用。 1....
根据提供的文件信息,本文将详细解析Java中利用Socket进行文件(包括图片)传输的相关知识点。 ### Java Socket基础知识 在深入探讨文件传输之前,我们先简要回顾一下Java Socket的基础概念。Socket是一种允许不同...
本文将深入探讨基于Java和Socket技术的文件传输原理,并通过一个实际示例,帮助读者理解如何利用Java进行高效的文件传输。 #### Java文件传输的核心技术:Socket **Socket**(套接字)是网络通信的基础组件,它...
- 在接收完所有数据后,将接收到的字节流写入本地文件,完成文件接收。 2. **客户端**: - 创建Socket,指定服务器的IP和端口,并尝试建立连接。 - 通过Socket的OutputStream获取输出流,准备发送数据。 - 将待...
- 数据在网络中是以字节流的形式传输的,因此通常使用`InputStream`和`OutputStream`的子类,如`DataInputStream`和`DataOutputStream`,它们提供了一些方便的方法来读写基本数据类型。 - 在示例中,`TCPServer....
这个示例展示了如何使用Java的I/O和Socket库进行基本的文件传输。然而,实际应用中,为了提高性能和可靠性,可能需要添加错误处理、断点续传、多线程优化、安全加密(如SSL/TLS)等特性。此外,对于大型文件,可能会...
- 数据通常以字节流的形式在网络间传输,因此可以使用`DataInputStream`和`DataOutputStream`来处理基本类型的数据。 4. **异常处理** - 在进行Socket编程时,必须处理各种可能的网络异常,如`IOException`、`...
4. 将这个对象序列化成字节流,以便在网络中传输。 在传输阶段,可以使用Socket编程或者HTTP/HTTPS协议进行数据交换。Java的`Socket`类提供了客户端和服务端通信的能力,而`HttpURLConnection`则支持HTTP协议的请求...
Java Socket编程是Java平台中用于实现网络通信的核心API,它基于TCP/IP协议栈,提供了低级别的、面向连接的、可靠的字节流通信。在本文中,我们将深入探讨Java Socket编程的关键概念、工作原理以及如何创建服务端和...
在Java中,Socket提供了面向连接的、可靠的、基于字节流的通信服务。"Java Socket 长连接实例"是关于如何实现一个持久连接的服务器和客户端程序的示例,这种连接能够保持开放,直到一方明确地关闭它。这在需要频繁...
数据传输通常是字节流,所以可能会用到`InputStreamReader`、`BufferedReader`、`PrintWriter`等类进行字符流的转换和控制。 最后,`EchoClient.java`代表客户端程序。客户端也需要创建`Socket`对象,通过`connect...