java实现socket客户端连接服务端

下面我会详细讲解如何在Java中实现Socket客户端连接服务端的完整攻略,并提供两个示例说明。

一、Socket客户端连接服务端的基本流程

Socket客户端连接服务端的基本流程如下:

  1. 创建客户端 Socket;
  2. 使用 Socket 连接服务端;
  3. 使用输出流向服务端发送数据;
  4. 使用输入流接收服务端发送的数据;
  5. 关闭输入流、输出流和 Socket。

二、Java实现Socket客户端连接服务端的示例

Java提供了Socket类和ServerSocket类来实现Socket网络编程。下面,我会分别提供基于TCP协议和UDP协议的Socket客户端连接服务端的示例。

1. 基于TCP协议的Socket客户端连接服务端的示例

import java.net.*;
import java.io.*;

public class TCPClient {
    public static void main(String[] args) {
        try {
            // 创建客户端 Socket
            Socket socket = new Socket("localhost", 9999);

            // 发送数据至服务端
            OutputStream os = socket.getOutputStream();
            OutputStreamWriter osw = new OutputStreamWriter(os);
            osw.write("Hello, TCP Server!");
            osw.flush();

            // 接收服务端数据
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            String message = br.readLine();
            System.out.println("Receive message from TCP Server: " + message);

            // 关闭输入流、输出流和 Socket
            br.close();
            isr.close();
            is.close();
            osw.close();
            os.close();
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2. 基于UDP协议的Socket客户端连接服务端的示例

import java.net.*;
import java.io.*;

public class UDPClient {
    public static void main(String[] args) {
        try {
            // 创建客户端 Socket
            DatagramSocket socket = new DatagramSocket();

            // 发送数据至服务端
            String message = "Hello, UDP Server!";
            byte[] buffer = message.getBytes();
            InetAddress address = InetAddress.getByName("localhost");
            DatagramPacket packet = new DatagramPacket(buffer, buffer.length, address, 8888);
            socket.send(packet);

            // 接收服务端数据
            byte[] receiveBuffer = new byte[1024];
            DatagramPacket receivePacket = new DatagramPacket(receiveBuffer, receiveBuffer.length);
            socket.receive(receivePacket);
            String receiveMessage = new String(receivePacket.getData(), 0, receivePacket.getLength());
            System.out.println("Receive message from UDP Server: " + receiveMessage);

            // 关闭 Socket
            socket.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

以上,就是基于TCP协议和UDP协议的Socket客户端连接服务端的示例。需要注意的是,以上示例仅为参考,实际使用中可能需要进行适当修改和扩展。

阅读剩余 49%

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java实现socket客户端连接服务端 - Python技术站

(0)
上一篇 2023年6月27日
下一篇 2023年6月27日

相关文章

  • Java 继承与多态超详细梳理

    Java 继承与多态超详细梳理攻略 一、继承的概念和实现 1.1 什么是继承? 继承是一种创建新类的方式,通过继承已经存在的类来创建新的类。被继承的类成为父类(或超类、基类),新创建的类称为子类(或派生类、衍生类)。 1.2 继承的实现 Java中继承使用 extends 关键字实现,子类可以继承父类的属性和方法。 // Animal 类作为父类 publi…

    other 2023年6月27日
    00
  • python程序的打包分发示例详解

    以下是Python程序的打包分发示例的完整攻略: 创建项目目录结构: 在项目根目录下创建一个与程序同名的文件夹,用于存放程序的代码和相关文件。 编写程序代码: 在程序文件夹中编写程序的代码,包括函数、类、变量等。 创建setup.py文件: 在项目根目录下创建一个名为setup.py的文件,用于定义程序的元数据和打包配置。 “`python from se…

    other 2023年10月14日
    00
  • 如何才能让IE浏览器安装调用未签名的ActiveX控件

    该攻略需要分为两个部分:生成未签名的ActiveX控件和在IE浏览器中安装调用未签名的ActiveX控件。 生成未签名的ActiveX控件 在Visual Studio中创建一个ActiveX控件项目,并将其编译为未签名的DLL文件。 示例代码如下所示: // MyActiveXCtrl.h #pragma once #ifdef MYACTIVEXCTRL…

    other 2023年6月26日
    00
  • js取数组最大值的四种方式

    JavaScript取数组最大值的四种方式 在 JavaScript 中,我们经常需要对数组中的元素进行处理,其中对于数组的最大值的计算就是非常常见的操作。下面将介绍 JavaScript 中取数组最大值的四种方式,分别是: 遍历查找 利用 Math.max() 函数 利用 ES6 的 … 扩展符和 Math.max() 函数 利用 reduce() 方…

    其他 2023年3月28日
    00
  • 深入Android HandlerThread 使用及其源码完全解析

    以下是关于深入Android HandlerThread使用及其源码完全解析的完整攻略: 深入Android HandlerThread 使用及其源码完全解析 什么是HandlerThread HandlerThread是Android中的一个线程类,它继承自Thread类,并且内部封装了一个Looper和一个Handler,可以方便地在后台线程中执行任务,…

    other 2023年10月15日
    00
  • 开源纯C#工控网关+组态软件

    开源纯C#工控网关+组态软件 工业自动化领域中,传感器、执行器等物理组件是衔接生产过程中各个环节的最基本和最核心的部分。但是,这些组件之间的连接往往需要通过电气和数据的链接完成,而工控网关就是连接控制系统和设备的桥梁。在这个过程中,组态软件的重要性不言而喻需。幸运的是,我们基于纯C#语言开发的、开源免费的工控网关+组态软件,解决了现有市场工控网关产品的痛点问…

    其他 2023年3月28日
    00
  • Java基础-Java变量的声明和作用域

    Java基础 – Java变量的声明和作用域 在Java中,变量是用来存储数据的容器。在使用变量之前,我们需要先声明它们,并指定它们的类型。本攻略将详细介绍Java变量的声明和作用域。 变量的声明 在Java中,变量的声明包括两个步骤:指定变量的类型和给变量起一个名字。变量的类型决定了变量可以存储的数据类型,而变量的名字用于在程序中引用该变量。 下面是一个示…

    other 2023年8月8日
    00
  • Windows8系统Metro(Modern UI)界面应用程序安装失败的解决方法

    针对“Windows8系统Metro(Modern UI)界面应用程序安装失败”的解决方法,下面提供完整攻略,包括以下步骤: 1. 确认系统环境与要求 在安装前,需要确认系统的环境是否符合要求。要求如下: 操作系统至少是 Windows 8 或更新的版本 设备应该使用有线或无线网络连接 用户应该具有管理员权限 如果系统环境满足要求,并仍然无法安装应用程序,则…

    other 2023年6月25日
    00
合作推广
合作推广
分享本页
返回顶部