iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Java编程Socket如何实现多个客户端连接同一个服务端
  • 417
分享到

Java编程Socket如何实现多个客户端连接同一个服务端

javasocket 2023-05-30 20:05:03 417人浏览 泡泡鱼
摘要

这篇文章主要介绍Java编程Socket如何实现多个客户端连接同一个服务端,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java Socket(套接字)通常也称作"套接字",用于描述IP地址和端口

这篇文章主要介绍Java编程Socket如何实现多个客户端连接同一个服务端,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Java Socket(套接字)通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。

使用Socket实现多个客户端和同一客户端通讯;首先客户端连接服务端发送一条消息,服务端接收到消息后进行处理,完成后再回复客户端一条消息。本人通过自己的思维编写了一份服务端和客户端实现的代码,望能与大家相互学习,共同进步。

服务端代码

public class Server {public static void main(String[] args) throws ioException {// 为了简单起见,所有的异常信息都往外抛int port = 8899;// 定义一个ServiceSocket监听在端口8899上ServerSocket server = new ServerSocket(port);System.out.println("等待与客户端建立连接...");while (true) {// server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的Socket socket = server.accept();// 每接收到一个Socket就建立一个新的线程来处理它new Thread(new Task(socket)).start();}// server.close();}static class Task implements Runnable {private Socket socket;public Task(Socket socket) {this.socket = socket;}@Override    public void run() {try {handlerSocket();}catch (Exception e) {e.printStackTrace();}}private void handlerSocket() throws Exception {// 跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了BufferedReader br = new BufferedReader(          new InputStreamReader(socket.getInputStream(), "UTF-8"));StringBuilder sb = new StringBuilder();String temp;int index;while ((temp = br.readLine()) != null) {if ((index = temp.indexOf("eof")) != -1) {// 遇到eof时就结束接收sb.append(temp.substring(0, index));break;}sb.append(temp);}System.out.println("FORM Cliect[port:" + socket.getPort()          + "] 消息内容:" + sb.toString());// 回应一下客户端Writer writer = new OutputStreamWriter(socket.getOutputStream(),          "UTF-8");writer.write(String.format("Hi,%d.天朗气清,惠风和畅!", socket.getPort()));writer.flush();writer.close();System.out.println(          "To Cliect[port:" + socket.getPort() + "] 回复客户端的消息发送成功");br.close();socket.close();}}}

客户端代码

import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.io.Reader;import java.io.Writer;import java.net.Socket;public class Client {public static void main(String[] args) {// 开启三个客户端,一个线程代表一个客户端 for (int i = 0; i < 3; i++) {new Thread(new Runnable() {@Override public void run() {try {TestClient client = TestClientFactory.createClient();client.send(String.format("Hello,Server!I'm %d.这周末天气如何。", client.client.getLocalPort()));client.receive();}catch (Exception e) {e.printStackTrace();}}}).start();}}static class TestClientFactory {public static TestClient createClient() throws Exception {return new TestClient("127.0.0.1", 8899);}}static class TestClient {public TestClient(String host, int port) throws Exception {// 与服务端建立连接 this.client = new Socket(host, port);System.out.println("Cliect[port:" + client.getLocalPort() + "] 与服务端建立连接...");}private Socket client;private Writer writer;public void send(String msg) throws Exception {// 建立连接后就可以往服务端写数据了 if(writer == null) {writer = new OutputStreamWriter(client.getOutputStream(), "UTF-8");}writer.write(msg);writer.write("eof\n");writer.flush();// 写完后要记得flush System.out.println("Cliect[port:" + client.getLocalPort() + "] 消息发送成功");}public void receive() throws Exception {// 写完以后进行读操作 Reader reader = new InputStreamReader(client.getInputStream(), "UTF-8");// 设置接收数据超时间为10秒 client.setSoTimeout(10*1000);char[] chars = new char[64];int len;StringBuilder sb = new StringBuilder();while ((len = reader.read(chars)) != -1) {sb.append(new String(chars, 0, len));}System.out.println("Cliect[port:" + client.getLocalPort() + "] 消息收到了,内容:" + sb.toString());reader.close();// 关闭连接 writer.close();client.close();}}}

接下来模拟一下:

首先运行服务端

Java编程Socket如何实现多个客户端连接同一个服务端

接着运行客户端(开三个客户端请求)

为了演示有所区分,服务端我使用的是Eclipse工具,客户端使用的是IntelliJ idea工具。这时可以看到客户端在控制台打印出来的消息

Java编程Socket如何实现多个客户端连接同一个服务端

一个Port端口号代表一个客户端,回过来看下服务端在控制台打印出来的消息

Java编程Socket如何实现多个客户端连接同一个服务端

以上是“Java编程Socket如何实现多个客户端连接同一个服务端”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网精选频道!

--结束END--

本文标题: Java编程Socket如何实现多个客户端连接同一个服务端

本文链接: https://www.lsjlt.com/news/221166.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java编程Socket如何实现多个客户端连接同一个服务端
    这篇文章主要介绍Java编程Socket如何实现多个客户端连接同一个服务端,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Java Socket(套接字)通常也称作"套接字",用于描述IP地址和端口...
    99+
    2023-05-30
    java socket
  • python socket多线程实现客户端与服务器连接
    python socket多线程实现客户端与服务器连接,供大家参考,具体内容如下 之前因为一些作业需要完成一个服务器监听多个客户端的程序,于是就用python写了这样的程序。话不多说...
    99+
    2024-04-02
  • Java中怎么实现一个Socket通讯客户端
    Java中怎么实现一个Socket通讯客户端,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java Socket通讯代码 <xml version="...
    99+
    2023-06-17
  • python套接字(二):实现一个服务器和多客户端连接
    文章目录 前言一、问题二、实现一个服务器连接多个客户端1、问题分析2、代码实现a、服务器端b、客户端 3、运行 前言 在上一篇博客python套接字(一):socket的使用简...
    99+
    2023-09-18
    python socket
  • C#实现Socket服务器及多客户端连接的方式
    服务端代码[控制台示例] static List<Socket> Sockets = new List<Socket>(); static v...
    99+
    2024-04-02
  • C++多线程实现TCP服务器端同时和多个客户端通信
    通讯建立后首先由服务器端发送消息,客户端接收消息;接着客户端发送消息,服务器端接收消息,实现交互发送消息。 服务器同时可以和多个客户端建立连接,进行交互; 在某次交互中,服务器端...
    99+
    2024-04-02
  • Java中怎么利用Socket实现一个通讯客户端
    本篇文章给大家分享的是有关Java中怎么利用Socket实现一个通讯客户端,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。具体客户端代码如下:import java.n...
    99+
    2023-06-17
  • 如何实现C#服务端与客户端连接
    今天就跟大家聊聊有关如何实现C#服务端与客户端连接,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。C#服务端与客户端连接实现的时间性:当服务器开始对端口侦听之后,便可以创建客户端与它建...
    99+
    2023-06-17
  • Java中Socket如何实现Redis客户端
    小编给大家分享一下Java中Socket如何实现Redis客户端,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!Redis是最常见的缓存服务中间件,在java开发中,一般使用 jedis 来实现。Redis的命令协议:$参数...
    99+
    2023-06-15
  • Android Socket怎么实现多个客户端聊天布局
    这篇“Android Socket怎么实现多个客户端聊天布局”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Andr...
    99+
    2023-06-30
  • Java聊天室之实现一个服务器与多个客户端通信
    目录一、题目描述二、解题思路三、代码详解一、题目描述 题目实现:一个服务器与多个客户端通信。通过一个服务器与多个客户端进行通信,运行程序,服务器启动后,启动两个客户端程序,然后通过服...
    99+
    2022-11-13
    Java实现聊天室 Java 聊天室 Java 服务器与客户端通信
  • PHP+Socket如何实现客户端与服务端数据传输
    这篇文章主要介绍“PHP+Socket如何实现客户端与服务端数据传输”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP+Socket如何实现客户端与服务端数据传输”文章能帮助大家解决问题。sock...
    99+
    2023-07-05
  • mysql多个客户端连接出现错误怎么解决
    当出现多个客户端连接mysql数据库时出现错误,通常是由于数据库连接数限制引起的。解决方法如下: 增加连接数限制:可以通过修改m...
    99+
    2024-04-09
    mysql
  • php使用workman框架实现socket服务以及连接客户端
    1. 解决什么问题,为什么要用workman  socket服务    都知道游戏安装包很大,渠道推广时,需要对游戏进行分包处理,而PHP命...
    99+
    2024-04-02
  • C#中怎么实现服务端与客户端连接
    这篇文章将为大家详细讲解有关C#中怎么实现服务端与客户端连接,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。C#服务端与客户端连接实现实例:class Client {&n...
    99+
    2023-06-17
  • Python中怎么实现服务端与客户端连接
    本篇内容主要讲解“Python中怎么实现服务端与客户端连接”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python中怎么实现服务端与客户端连接”吧!服务端我们使用 socket 模块的&nbs...
    99+
    2023-06-08
  • Nodejs中怎么实现一个TCP服务端与客户端聊天程序
    今天就跟大家聊聊有关Nodejs中怎么实现一个TCP服务端与客户端聊天程序,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。服务器端count:连接的客...
    99+
    2024-04-02
  • Linux网络编程:Socket套接字编程(Server服务器 Client客户端)
    文章目录: 一:定义和流程分析 1.定义 2.流程分析  3.网络字节序 二:相关函数  IP地址转换函数inet_pton inet_ntop(本地字节序 网络字节序) socket函数(创建一个套接字) bind函数(给socket绑定...
    99+
    2023-09-04
    linux 运维 服务器
  • Docker中如何像HTTP客户端一样连接并使用UNIX socket
    这篇文章将为大家详细讲解有关Docker中如何像HTTP客户端一样连接并使用UNIX socket,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Docker构架:薄CLI...
    99+
    2024-04-02
  • 在Java项目中使用Socket 如何实现 一个TCP服务端
    在Java项目中使用Socket 如何实现 一个TCP服务端?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1 Java Socket简介  所谓socket 通...
    99+
    2023-05-31
    java socket tcp
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作