Java Socket编程(三) 服务器Sockets

yizhihongxing

下面给你详细讲解一下“Java Socket编程(三) 服务器Sockets”的完整攻略。

1. 简介

在Socket编程中,服务器socket是一个能够运行在网络上的程序。它采用一种协议来监听和处理客户端请求。在Java程序中,使用ServerSocket类来创建服务器socket。当服务器socket接收到来自客户端的连接请求时,它会把连接套接字(Client Socket)返回给客户端,客户端可以使用这个连接套接字与服务器socket进行通信。

2. 创建服务器socket

使用ServerSocket类创建服务器socket的语法如下:

ServerSocket serverSocket = new ServerSocket(port);
  • port: 整数类型,表示要监听的端口号。

3. 监听客户端请求

使用ServerSocket类的accept()方法监听客户端请求。该方法会阻塞程序执行,直到有客户端连接请求到达服务器socket。

Socket clientSocket = serverSocket.accept();

上面的代码中,clientSocket是一个从服务器socket返回的连接套接字。可以使用它与客户端进行通信。

4. 与客户端通信

可以使用连接套接字与客户端进行通信。可以通过输入输出流来进行数据的读写操作。在服务器端,需要使用InputStream和OutputStream来读写数据。

InputStream inputStream = clientSocket.getInputStream();
OutputStream outputStream = clientSocket.getOutputStream();

可以使用InputStream的read()方法来读取来自客户端的数据,使用OutputStream的write()方法来向客户端写入数据。

byte[] buffer = new byte[1024];
int length = inputStream.read(buffer);
outputStream.write(buffer, 0, length);

上面的代码中,buffer是一个byte数组,用于存储从客户端读取的数据。length是读取到的数据的长度。使用outputStream的write()方法把读取到的数据发送给客户端。

5. 关闭连接

在服务器socket端,可以通过关闭连接套接字来关闭与客户端的连接。

clientSocket.close();

6. 示例说明

下面给出两个示例来说明如何使用Java ServerSocket类创建服务器socket。

示例1

该示例中创建一个简单的服务器socket,它监听8080端口,并向客户端返回当前时间。具体代码如下:

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

public class ServerSocketDemo {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);

        while (true) {
            Socket clientSocket = serverSocket.accept();
            System.out.println("New connection from " + clientSocket.getInetAddress());

            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            out.println(new java.util.Date().toString());

            clientSocket.close();
        }
    }
}

示例2

该示例中创建一个简单的服务器socket,它监听8080端口,并将客户端发来的请求内容原样返回。具体代码如下:

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

public class ServerSocketDemo {
    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = new ServerSocket(8080);

        while (true) {
            Socket clientSocket = serverSocket.accept();
            System.out.println("New connection from " + clientSocket.getInetAddress());

            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);

            String inputLine;
            while ((inputLine = in.readLine()) != null) {
                out.println(inputLine);
            }

            clientSocket.close();
        }
    }
}

以上就是创建Java服务器socket的完整攻略,希望可以帮到你!

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java Socket编程(三) 服务器Sockets - Python技术站

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

相关文章

  • C语言 auto和register关键字

    C语言 auto和register关键字 在C语言中,auto和register都是C语言的关键字,用于声明局部变量。本文将对它们进行详细讲解和示例演示。 auto关键字 auto关键字是可选的,通常不写也会被默认添加。它用来声明局部变量,在函数内部定义变量时可以选择添加auto关键字,可以让编译器根据变量的作用域来自动设置变量的存储类型。 示例一: #in…

    other 2023年6月27日
    00
  • miui12.5增强版内存扩展怎么开启?miui12.5增强版开启内存扩展技巧

    MIUI 12.5增强版内存扩展开启攻略 MIUI 12.5增强版内存扩展是一项功能强大的功能,可以帮助您优化手机的内存使用,提升系统的性能和响应速度。下面是详细的攻略,教您如何开启MIUI 12.5增强版内存扩展。 步骤一:进入设置 首先,您需要进入手机的设置界面。您可以通过下拉通知栏,点击右上角的齿轮图标,或者在应用列表中找到“设置”应用来进入设置界面。…

    other 2023年8月2日
    00
  • IntelliJ IDEA 2019如何匹配大小写开关?IntelliJ IDE匹配大小写开关教程

    IntelliJ IDEA 2019如何匹配大小写开关? 在IntelliJ IDEA 2019中,你可以通过以下步骤来开启或关闭匹配大小写功能: 打开IntelliJ IDEA 2019。 在菜单栏中选择 \”File\”(文件)。 从下拉菜单中选择 \”Settings\”(设置)。 在弹出的窗口中,选择 \”Editor\”(编辑器)。 在左侧的面板中…

    other 2023年8月16日
    00
  • vue前端使用md5加密解密

    Vue前端使用MD5加密解密攻略 在Vue前端应用程序中,MD5加密是一种常用的加密方式。MD5是一种不可逆加密法,可以将任意长度的数据转换为固定长度的哈希值。以下是在Vue前应用程序中使用MD5加的详细攻。 安装MD5库 在Vue前端应用程序中使用MD5加密,需要先安装MD5库。您可以使用以下命令在应用程序中安装MD5库: npm install –sa…

    other 2023年5月6日
    00
  • Postman自动化接口测试实战

    当需要对一个Web API进行测试时,可以使用Postman进行接口测试。Postman是一个非常好用的API测试工具,通过Postman可以方便地对API进行测试,以确保其能够正常工作。在本篇文章中,我将为大家讲解使用Postman进行自动化接口测试的完整攻略。 准备工作 在使用Postman进行自动化接口测试之前,需要做一些准备工作。具体包括以下几步: …

    other 2023年6月27日
    00
  • 某些输入文件使用了未经检查或不安全的操作

    某些输入文件使用了未经检查或不安全的操作 随着互联网的发展,越来越多的人开始涉足网站建设。但是,在网站开发中,我们经常会遇到一些输入文件,这些文件可能会对网站的安全性造成潜在威胁。 为什么会出现未经检查或不安全的输入文件呢?其原因有很多。一方面,可能是因为开发者忙于其他工作而疏忽了输入文件的安全性检查;另一方面,可能是因为开发者虽然有意或无意地忽略了安全性检…

    其他 2023年3月29日
    00
  • MSSQL 大量数据时,建立索引或添加字段后保存更改提示超时的解决方法

    下面是 MSSQL 大量数据时建立索引或添加字段后保存更改提示超时解决方法的完整攻略: 问题描述 在 MSSQL 数据库中,当对包含大量数据的表建立索引或添加新的字段时,执行保存更改操作时可能会提示超时。 解决方法 1. 首先尝试通过增加超时时间来解决该问题 在 SQL Server Management Studio 中,可以通过以下步骤增加执行时间限制:…

    other 2023年6月26日
    00
  • js中var、let、const之间的区别

    JavaScript中var、let、const之间的区别 在JavaScript中,var、let和const是用于声明变量的关键字。它们之间有一些重要的区别,包括作用域、变量提升和可变性等方面。 var var是ES5中引入的关键字,用于声明变量。它具有以下特点: 函数作用域:var声明的变量的作用域是函数级别的,即在函数内部声明的变量在函数外部是不可访…

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