方式一:同步阻塞方式(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小时内与您取得联系。