java网络编程之socket网络编程示例(服务器端/客户端)

Java网络编程是一门重要的计算机网络技术,其能让程序员通过网络实现数据传输,协作会话,远程调用等等。而Socket编程是Java网络编程的基础。本文将详细讲解Java Socket网络编程的核心概念和使用方法,并提供两个范例以供参考。

简介

Socket是两个不同设备之间相互通信的一种技术。它是一种网络间进程通信机制。Socket在JAVA编程中被封装成为套接字类,存在于java.net包中。它提供了对TCP和UDP协议进行通信的简单方式。

核心概念

在Socket编程中,需要了解的核心概念包括TCP/IP协议、Socket、端口号和IP地址。

TCP/IP协议

TCP是Transmission Control Protocol(传输控制协议)的简称,表示一种可靠的、面向连接的、基于字节流的传输层网络协议,主要用于Internet中数据的传输。TCP协议提供了虚拟的点对点连接,保证了数据的可靠性。与此相对的,还有一个使用较普遍的是UDP(User Datagram Protocol,用户数据报协议),这是一种无连接的、不保证可靠性的传输层协议。

Socket

Socket套接字类代表通信连接的一端。一个Socket对象包含了一个IP地址和一个端口号。当使用套接字时,需要指定目标计算机的IP地址和端口号。这样才能进行双方的通信。

端口号

在Socket通信过程中,端口号是必须的,它可以让网络上的机器识别出不同的应用程序,不同的端口号代表着不同的应用程序。

IP地址

IP地址指的是Internet Protocol Address,它是互联网协议的地址。没有IP地址,计算机无法互相通信,也就无法使用Socket进行通信。

示例一:Socket服务器端

下面是一个使用Java Socket实现的服务器端范例。在这个服务器端程序中,首先创建一个ServerSocket对象,然后把绑定到一个指定的端口号。通过调用accept()方法等待客户的请求。当有客户端请求时,accept()方法将会返回客户端Socket对象。这样,服务器端Socket就可以与客户端建立连接了。

import java.net.ServerSocket;
import java.net.Socket;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;

public class Server {
    public static void main(String args[]) throws Exception {
        ServerSocket server = new ServerSocket(8888);
        System.out.println("服务器启动成功!");
        while (true) {
            Socket socket = server.accept();
            System.out.println("客户端上线!");
            BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
            String line;
            while ((line = in.readLine()) != null) {
                System.out.println("客户端发送了:" + line);
                out.println("服务器收到了:" + line);
            }
            socket.close();
            System.out.println("客户端下线!");
        }
    }

}

示例二:Socket客户端

下面是一个使用Java Socket实现的客户端范例。在这个客户端程序中,首先创建一个Socket对象,然后通过这个对象就可以连接到服务器端的Socket。连接成功后,在程序中通过BufferedReader读取用户在命令行输入的内容,并通过PrintWriter发送给服务器端,等待服务器端的响应信息。

import java.net.Socket;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;

public class Client {
    public static void main(String args[]) throws Exception {
        Socket socket = new Socket("localhost", 8888);
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
        String line;
        while ((line = reader.readLine()) != null) {
            out.println(line);
            System.out.println(in.readLine());
        }
        socket.close();
    }
}

总结

本文介绍了Java Socket网络编程的核心概念和使用方法,并向读者们呈现了两个范例。对于初学者来说,Socket编程可能不太容易理解和掌握,但只要多动手实践,多看相关技术书籍和博客文章,就能逐步掌握这些重要的网络编程技术。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java网络编程之socket网络编程示例(服务器端/客户端) - Python技术站

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

相关文章

  • 通过python顺序修改文件名字的方法

    以下是通过python顺序修改文件名字的方法的完整攻略: 步骤一:导入os和re模块 在使用Python修改文件名之前,首先需要导入两个模块,即os和re。 import os import re os模块:提供了访问文件系统的功能,包括对文件和目录的创建、删除、重命名、修改权限等操作。 re模块:是Python中处理正则表达式的模块,我们可以用它来匹配文件…

    other 2023年6月26日
    00
  • 基于jquery的9行js轻松实现tab控件示例

    下面是详细讲解“基于jquery的9行js轻松实现tab控件示例”的完整攻略: 概述 tab控件是常见的网页交互组件之一,其能够使得网页内容通过标签页方式进行分组展示,用户可以通过点击对应的标签页来查看相应的内容。本攻略将讲解如何基于jQuery实现一个简单的tab控件。 思路 用户点击标签页时,对应的内容区域显示,其他内容区域隐藏 标签页与对应内容可以通过…

    other 2023年6月27日
    00
  • golang快速入门:从菜鸟变大佬

    Golang快速入门:从菜鸟变大佬 简介 Go是一种开源的编程语言,由Google开发。它具有高效、简洁、安全等特点,适用于构建高性能的网络服务和分布式系统。本攻略将介绍如何快速入门Go语言,从菜鸟变成大佬。 安装和配置 可以从官方网站下载Go语言的安装包,并按照提示进行安装。安装完成后,需要配置环境变量,以便在命令行中使用Go命令。可以在.bashrc或.…

    other 2023年5月7日
    00
  • 「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块

    「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块的完整攻略 本文将详细讲解「雕爷学编程」Arduino动手做(28)——RGB全彩LED模块的完整攻略,包括硬件连接、代码编写和两个示例说明。 硬件连接 RGB全彩LED模块有4个引脚,分别是红色引脚、绿色引脚、蓝色引脚和公共引脚。公共引脚需要连接到Arduino的数字引脚上,红色、绿色和蓝色…

    other 2023年5月5日
    00
  • 魔兽世界7.3.5奶僧怎么堆属性 wow7.35奶僧配装属性优先级攻略

    魔兽世界7.3.5奶僧怎么堆属性攻略 1. 总体思路 奶僧的属性堆放主要分为两个部分:生存能力和治疗强度,其中生存能力包括吸收和承受伤害能力,治疗强度就是输出治疗的效果。 2. 属性优先级 2.1 生存能力属性 全能 精通 躲闪 暴击 2.2 治疗强度属性 精通 暴击 急速 全能 3. 装备选择 3.1 护甲 头、肩、胸、手、腰、腿、脚,属性优先级依次为:全…

    other 2023年6月27日
    00
  • GTA5 PC版右键闪退怎么办_开车途中点击右键闪退解决

    以下是“GTA5 PC版右键闪退怎么办_开车途中点击右键闪退解决”的完整攻略: 问题描述 在GTA5 PC版游戏中,在开车途中点击右键时会出现闪退的问题,这给玩家带来了不少麻烦。那么,该如何解决这个问题呢? 解决方法 方法1:修改注册表 在Windows系统中,有时候右键菜单过于复杂或者安装的软件太多会导致右键菜单出现问题。因此,我们需要修改注册表来修复这个…

    other 2023年6月27日
    00
  • 分析crash文件

    分析crash文件 当我们的应用程序在运行中出现崩溃时,我们通常可以通过获取到的crash文件来了解崩溃的原因和位置。在本文中,我们将介绍如何分析crash文件,以便我们更好地理解崩溃的原因。 什么是crash文件 当应用程序崩溃时,操作系统会生成crash文件(或称为core dump文件)。这种文件包含了程序在崩溃时的内存状态、调用栈、寄存器状态等信息。…

    其他 2023年3月29日
    00
  • HTML5页面无缝闪开的问题及解决方案

    HTML5页面无缝闪开的问题是指页面在加载完成前,页面的元素先显示出来,之后再调整位置。这种体验会给用户带来不良的用户体验,因此需要解决。以下是解决方案: 1. 加载样式表前使用JS隐藏元素 在页面头部的 <head> 标签中加入以下代码: <style> .no-flash { display: none; } </style…

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