Java和大数据系列

注:大家觉得博客好的话,别忘了点赞收藏呀,本人每周都会更新关于人工智能和大数据相关的内容,内容多为原创,Python Java Scala SQL 代码,CV NLP 推荐系统等,Spark Flink Kafka Hbase Hive Flume等等~写的都是纯干货,各种顶会的论文解读,一起进步。
今天和大家分享一下Java 多线程socket 网络协议传输的代码
#博学谷IT学习技术支持#


文章目录

  • Java和大数据系列
  • 前言
  • 一、Socket是什么?
  • 二、使用步骤
    • 1.定义发送线程
    • 2.定义接受线程
    • 3.定义服务器Server
    • 4.定义客户端Client
  • 总结

前言

大数据框架很多底层都用到了Java多线程socket网络协议传输,今天来分享一段代码实战。


一、Socket是什么?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。
你会使用它们吗?

二、使用步骤

1.定义发送线程

由于使用多线层模式,所以首先实现2个Runnable接口,一个用来发送,一个用来接受

代码如下(示例):

package pack03;import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.Scanner;public class MyRunnable01Send implements Runnable{private Socket socket = null;public MyRunnable01Send() {}public MyRunnable01Send(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {OutputStream outputStream = socket.getOutputStream();Scanner scanner = new Scanner(System.in);while (true){String line = scanner.nextLine();outputStream.write(line.getBytes());if ("exit".equals(line)){break;}System.out.println();}socket.close();} catch (IOException e) {throw new RuntimeException(e);}}
}

2.定义接受线程

代码如下(示例):

package pack03;import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;public class MyRunnable02Receive implements Runnable{private Socket socket = null;public MyRunnable02Receive() {}public MyRunnable02Receive(Socket socket) {this.socket = socket;}@Overridepublic void run() {try {InputStream inputStream = socket.getInputStream();byte[] bytes = new byte[1024];while (true){int len = inputStream.read(bytes);String str = new String(bytes, 0, len);if ("exit".equals(str)){break;}System.out.println(str);}inputStream.close();} catch (IOException e) {throw new RuntimeException(e);}}
}

3.定义服务器Server

代码如下(示例):

package pack03;import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;public class Server {public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(10010);Socket socket = serverSocket.accept();MyRunnable01Send sendRunnable = new MyRunnable01Send(socket);Thread sendThread = new Thread(sendRunnable, "发送线程");sendThread.start();MyRunnable02Receive receiveRunnable = new MyRunnable02Receive(socket);Thread receiveThread = new Thread(receiveRunnable, "接受线程");receiveThread.start();}
}

4.定义客户端Client

代码如下(示例):

package pack03;import java.io.IOException;
import java.net.Socket;public class Client {public static void main(String[] args) throws IOException {Socket socket = new Socket("localhost",10010);MyRunnable01Send sendRunnable = new MyRunnable01Send(socket);Thread sendThread = new Thread(sendRunnable, "发送线程");sendThread.start();MyRunnable02Receive receiveRunnable = new MyRunnable02Receive(socket);Thread receiveThread = new Thread(receiveRunnable, "接受线程");receiveThread.start();}
}

总结

本文通过Java多线程,来实现socket网络协议传输,非常简单的小案例。

Java多线程socket网络协议传输相关推荐

  1. 深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/c++linux服务器开发

    深入分析websocket协议,从3个方面设计网络应用层协议 视频讲解如下: 深入分析websocket协议,从3个方面设计网络应用层协议丨网络编程|网络IO|epoll|socket|网络协议丨c/ ...

  2. 【Java】Socket网络编程解读与实战

    Socket原理 Socket原理 <Socket 到底是什么> Socket--套接字 是网络应用程序编程的接口和一种机制 用套接字中的相关函数来建立连接和完成通信 Socket可以看成 ...

  3. Java之socket网络编程

    socket网络编程 文章目录 socket网络编程 一.网络编程概述 二.网络通信要素概述 三.IP和端口号 四.网络协议 五.TCP网络编程 六.UDP网络编程 一.网络编程概述 网络编程的目的 ...

  4. (Java)socket网络编程及处理socket粘包拆包问题

    目录 1.socket简介 2.TCP/IP协议 3.tcp三次握手 4.socket的一些接口函数原理 5.java socket 长连接粘包拆包问题 6.socket模拟服务端客户端发消息 7.U ...

  5. JAVA.SE Socket网络编程

    文章目录 1.网络编程入门 1.1软件架构介绍 1.2互联网通信协议 1.3网络编程的三要素 2.TCP通信 2.1通信分为客户端与服务器 2.2 socket的介绍与使用 2.3servletSoc ...

  6. Java多线程与网络编程综合使用

    处理多线程与网络编程最为经典的例子莫过于聊天室,那我就聊天室案例作为一个回顾. 首先,我们来看以下代码: package MultiTCP;import java.io.DataOutputStrea ...

  7. java socket 消息中转,Java中Socket实现消息传输(传输原型)

    项目已经做的差不多了,其中做了一个消息的转发功能,所以自己也写一个简单的例子看看 先一步步的来吧,先写好一个Socket的消息传输的原型来,再一步步的改进吧. 其实在这个基础上要中的东西还是很多的 1 ...

  8. java使用socket网络编程实现qq互聊(UPD简单版本)

    JAVA初学者.勿喷. eclipse稍微有点难用,关程序是在Console里面,要是没开出来并且死循环的话电脑cpu直接拉满了. 而且进程的关闭是输入指定的"再见"才关闭多线程, ...

  9. Socket网络协议之二

    2019独角兽企业重金招聘Python工程师标准>>> 服务器端:java代码 package com; import java.io.BufferedWriter; import ...

最新文章

  1. Android。WebView加载UR请求使用Cookie储存User_Id记录用户是否登陆过
  2. Java高并发编程(六):重入锁
  3. 嵌入式文件系统镜像制作及烧写
  4. 解决 Windows 和 Ubuntu 时间不一致的问题--转载
  5. ADO学习(七)ADOX相关知识
  6. 如何新建分支上传_如何创建git分支?
  7. Failed to execute goal org.apache.maven.plugins:maven-resources-plugin
  8. 2-PowerShell 对象,查询操作和格式化
  9. 工作流任务的权限问题
  10. 数学分析笔记4:一元函数微分学
  11. js监听浏览器tab页面变化
  12. 多隆,他从阿里的第一位程序员,做到了阿里的合伙人,是神一样的人物
  13. GXOI/GZOI2019题解
  14. 绘制同心圆-第12届蓝桥杯Scratch省赛1真题第3题
  15. python的标准库turtle_Python标准库使用之使用turtle绘制奥林匹克五环
  16. 你不得不知的几个互联网ID生成器方案
  17. [二分图最大独立集] bzoj4808 马
  18. es系列:es集群部署
  19. 故障樹分析 (Fault Tree Analysis):找到根本原因 (Root Cause Analysis)
  20. 工业液晶串口屏人机界面组态软件开发指南

热门文章

  1. 浙江凤凰计划:用新零售模式做资本市场敲门砖
  2. HDU and 蓝桥杯 完全背包练习题
  3. 基于PHP+MySQL的美容会所企业资产管理系统
  4. 通俗理解光猫、网关、路由器、交换机
  5. 五子棋的彩蛋——背景音效
  6. 2021-07-14软件测试实习所学内容
  7. php38.xyz,GitHub - xyz9836/WeChatDeveloper: 【新】微信服务号+微信小程序+微信支付+支付宝支付...
  8. 今日的金山,而非往日的金山
  9. 推荐几个有趣且实用的微信小程序……
  10. 中华好诗词大学季第二季(五)