全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Java网络通信基础编程(必看篇)

方式一:同步阻塞方式(BIO):

服务器端(Server):

package com.ietree.basicskill.socket.mode1;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 服务端
 */
public class Server {
  // 端口号
  final static int PORT = 8765;
  public static void main(String[] args) {
    ServerSocket server = null;
     try {
      server = new ServerSocket(PORT);
      System.out.println("Server start......");
      // 进行阻塞
      Socket socket = server.accept();
      // 创建一个程序执行客户端的任务
      new Thread(new ServerHandler(socket)).start();
      
    } catch (IOException e) {
      e.printStackTrace();
    } finally {
      if(server != null){
        try {
          server.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      server = null;
    }
  }
}

采用多线程来处理接收到的请求(ServerHandler):

package com.ietree.basicskill.socket.mode1;

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

public class ServerHandler implements Runnable {
  private Socket socket;
  public ServerHandler(Socket socket) {
    this.socket = socket;
  }

  @Override
  public void run() {
    BufferedReader in = null;
    PrintWriter out = null;
    try {
      in = new BufferedReader(new InputStreamReader(this.socket.getInputStream()));
      out = new PrintWriter(this.socket.getOutputStream(), true);
      String body = null;
      while (true) {
        body = in.readLine();
        if(body == null){
          break;
        }
        System.out.println("Server: " + body);
        out.println("服务器端回送响应的数据。");
      }
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if(in != null){
        try {
          in.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      if(out != null){
        try {
          out.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      if(socket != null){
        try {
          socket.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      socket = null;
    }
  }
}

客户端(Client):

package com.ietree.basicskill.socket.mode1;

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

/**
 * 客户端
 */
public class Client {
  final static String ADDRESS = "127.0.0.1";
  final static int PORT = 8765;
  public static void main(String[] args) {
    Socket socket = null;
    BufferedReader in = null;
    PrintWriter out = null;
    try {
      socket = new Socket(ADDRESS, PORT);
      in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
      out = new PrintWriter(socket.getOutputStream(), true);
      
      // 向服务器端发送数据
      out.println("接收到客户端的请求数据......");
      String response = in.readLine();
      System.out.println("Client: " + response);
    } catch (Exception e) {
      e.printStackTrace();
    } finally {
      if(in != null){
        try {
          in.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      if(out != null){
        try {
          out.close();
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
      if(socket != null){
        try {
          socket.close();
        } catch (IOException e) {
          e.printStackTrace();
        }
      }
      socket = null;
    }
  }
}

程序输出:

Server:

Server start......
Server: 接收到客户端的请求数据......

Client:

Client: 服务器端回送响应的数据。

同步非阻塞(NIO)

异步非阻塞(AIO)

以上这篇Java网络通信基础编程(必看篇)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


# java网络通信编程  # Java网络通信中ServerSocket的设计优化方案  # java网络通信技术之简单聊天小程序  # java 基础知识之网络通信(TCP通信、UDP通信、多播以及NIO)总结  # 基于java TCP网络通信的实例详解  # JAVA后端学习精华之网络通信项目进阶  # 客户端  # 给大家  # 回送  # 希望能  # 这篇  # 必看  # 创建一个  # 小编  # 多线程  # 服务端  # 大家多多  # 网络通信  # 端口号  # public  # final  # IOException  # net  # ServerSocket  # Socket  # static 


相关文章: 南平网站制作公司,2025年南平市事业单位报名时间?  如何通过可视化优化提升建站效果?  制作网站的模板软件,网站怎么建设?  ui设计制作网站有哪些,手机UI设计网址吗?  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  如何优化Golang Web性能_Golang HTTP服务器性能提升方法  如何在建站主机中优化服务器配置?  如何在腾讯云服务器快速搭建个人网站?  网站规划与制作是什么,电子商务网站系统规划的内容及步骤是什么?  宝塔新建站点报错如何解决?  如何在建站之星网店版论坛获取技术支持?  长春网站建设制作公司,长春的网络公司怎么样主要是能做网站的?  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  如何配置IIS站点权限与局域网访问?  模具网站制作流程,如何找模具客户?  建站之星×万网:智能建站系统+自助建站平台一键生成  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  如何快速查询网站的真实建站时间?  免费视频制作网站,更新又快又好的免费电影网站?  免费公司网站制作软件,如何申请免费主页空间做自己的网站?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  如何快速生成ASP一键建站模板并优化安全性?  建站org新手必看:2024最新搭建流程与模板选择技巧  建站之星体验版:智能建站系统+响应式设计,多端适配快速建站  网站专业制作公司有哪些,做一个公司网站要多少钱?  如何获取开源自助建站系统免费下载链接?  如何制作算命网站,怎么注册算命网站?  宝塔建站助手安装配置与建站模板使用全流程解析  ,交易猫的商品怎么发布到网站上去?  如何用低价快速搭建高质量网站?  c++怎么使用类型萃取type_traits_c++ 模板元编程类型判断【方法】  学校建站服务器如何选型才能满足性能需求?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  建站中国必看指南:CMS建站系统+手机网站搭建核心技巧解析  子杰智能建站系统|零代码开发与AI生成SEO优化指南  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何在Golang中使用encoding/gob序列化对象_存储和传输数据  建站主机选购指南与交易推荐:核心配置解析  建站主机CVM配置优化、SEO策略与性能提升指南  如何快速搭建虚拟主机网站?新手必看指南  C++如何编写函数模板?(泛型编程入门)  网站网页制作电话怎么打,怎样安装和使用钉钉软件免费打电话?  如何在IIS管理器中快速创建并配置网站?  文字头像制作网站推荐软件,醒图能自动配文字吗?  定制建站哪家更专业可靠?推荐榜单揭晓  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  实例解析angularjs的filter过滤器  制作表格网站有哪些,线上表格怎么弄?  深圳网站制作案例,网页的相关名词有哪些?  5种Android数据存储方式汇总 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。