javasocket(java Socket通信原理)

2025-03-13 07:40:03 0

javasocket(java Socket通信原理)

本文目录

java Socket通信原理

具体如下:

首先socket 通信是基于TCP/IP 网络层上的一种传送方式,我们通常把TCP和UDP称为传输层。其中UDP是一种面向无连接的传输层协议。UDP不关心对端是否真正收到了传送过去的数据。

如果需要检查对端是否收到分组数据包,或者对端是否连接到网络,则需要在应用程序中实现。UDP常用在分组数据较少或多播、广播通信以及视频通信等多媒体领域。

在这里我们不进行详细讨论,这里主要讲解的是基于TCP/IP协议下的socket通信。

socket是基于应用服务与TCP/IP通信之间的一个抽象,他将TCP/IP协议里面复杂的通信逻辑进行分装。

服务端初始化ServerSocket,然后对指定的端口进行绑定,接着对端口及进行监听,通过调用accept方法阻塞。

此时,如果客户端有一个socket连接到服务端,那么服务端通过监听和accept方法可以与客户端进行连接。

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。

Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。

Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点。Java可以编写桌面应用程序、Web应用程序、分布式系统和嵌入式系统应用程序等。

java中的socket是什么意思

所谓socket通常也称作“套接字“,用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过“套接字“向网络发出请求或者应答网络请求。以J2SDK-1.3为例,Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需的会话。对于一个网络连接来说,套接字是平等的,并没有差别,不因为在服务器端或在客户端而产生不同级别。不管是Socket还是ServerSocket它们的工作都是通过SocketImpl类及其子类完成的。重要的Socket API:java.net.Socket继承于java.lang.Object,有八个构造器,其方法并不多,下面介绍使用最频繁的三个方法,其它方法大家可以见JDK-1.3文档。. Accept方法用于产生“阻塞“,直到接受到一个连接,并且返回一个客户端的Socket对象实例。“阻塞“是一个术语,它使程序运行暂时“停留“在这个地方,直到一个会话产生,然后程序继续;通常“阻塞“是由循环产生的。. getInputStream方法获得网络连接输入,同时返回一个InputStream对象实例。. getOutputStream方法连接的另一端将得到输入,同时返回一个OutputStream对象实例。注意:其中getInputStream和getOutputStream方法均会产生一个IOException,它必须被捕获,因为它们返回的流对象,通常都会被另一个流对象使用。2ServerSocket类例子package com.lanber.socket;import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket;public class ServerDemo {/*** 注意:Socket的发送与接收是需要同步进行的,即客户端发送一条信息,服务器必需先接收这条信息,* 而后才可以向客户端发送信息,否则将会有运行时出错。* @param args*/public static void main(String args) {ServerSocket ss = null;try {ss = new ServerSocket(8888);//服务器接收到客户端的数据后,创建与此客户端对话的SocketSocket socket = ss.accept();//用于向客户端发送数据的输出流DataOutputStream dos = new DataOutputStream(socket.getOutputStream());//用于接收客户端发来的数据的输入流DataInputStream dis = new DataInputStream(socket.getInputStream());System.out.println(“服务器接收到客户端的连接请求:“ + dis.readUTF());//服务器向客户端发送连接成功确认信息dos.writeUTF(“接受连接请求,连接成功!“);//不需要继续使用此连接时,关闭连接socket.close();ss.close();} catch (IOException e) {e.printStackTrace();}}}3客户端的例子package com.lanber.socket;importjava.io.DataInputStream;  import java.io.DataOutputStream;  importjava.io.IOException;  import java.io.OutputStream;  import java.net.Socket;  import java.net.UnknownHostException;public class ClientDemo {/**  * @param args  */  public static void main(String args) {  Socket socket = null;  try {  socket = new Socket(“localhost“,8888);  //获取输出流,用于客户端向服务器端发送数据  DataOutputStream dos = new DataOutputStream(socket.getOutputStream());  //获取输入流,用于接收服务器端发送来的数据  DataInputStream dis = new DataInputStream(socket.getInputStream());  //客户端向服务器端发送数据  dos.writeUTF(“我是客户端,请求连接!“);  //打印出从服务器端接收到的数据  System.out.println(dis.readUTF());  //不需要继续使用此连接时,记得关闭哦  socket.close();  } catch (UnknownHostException e) {  e.printStackTrace();  } catch (IOException e) {  e.printStackTrace();  }  }}

java编程中,Socket通信是怎么实现的

java编程对于Socket之间的通信过程如下:

服务端往Socket的输出流里面写东西,客户端就可以通过Socket的输入流读取对应的内容。Socket与Socket之间是双向连通的,所以客户端也可以往对应的Socket输出流里面写东西,然后服务端对应的Socket的输入流就可以读出对应的内容。下面来看一些服务端与客户端通信的例子:

public class Server {    public static void main(String args) throws IOException {      //为了简单起见,所有的异常信息都往外抛      int port = 8899;      //定义一个ServerSocket监听在端口8899上      ServerSocket server = new ServerSocket(port);      //server尝试接收其他Socket的连接请求,server的accept方法是阻塞式的      Socket socket = server.accept();      //跟客户端建立好连接之后,我们就可以获取socket的InputStream,并从中读取客户端发过来的信息了。      Reader reader = new InputStreamReader(socket.getInputStream());      char chars = new char;      int len;      StringBuilder sb = new StringBuilder();      while ((len=reader.read(chars)) != -1) {         sb.append(new String(chars, 0, len));      }      System.out.println(“from client: “ + sb);      reader.close();      socket.close();      server.close();   }   }客户端代码Java代码  public class Client {        public static void main(String args) throws Exception {        //为了简单起见,所有的异常都直接往外抛        String host = “127.0.0.1“;  //要连接的服务端IP地址        int port = 8899;   //要连接的服务端对应的监听端口        //与服务端建立连接        Socket client = new Socket(host, port);        //建立连接后就可以往服务端写数据了        Writer writer = new OutputStreamWriter(client.getOutputStream());        writer.write(“Hello Server.“);        writer.flush();//写完后要记得flush        writer.close();        client.close();     }       }

java 解释下什么是Socket

socket分serversocket和socket两种。一个是用于开启服务器端口的,一个是用于连接服务器的。socket并不光是java中有,几乎所有的语言都会有这个函数。根据英文字面翻译为插座。利用socket可以进行点对点连接。用于通信、传输文件。

javasocket(java Socket通信原理)

本文编辑:admin
: javasocket,

更多文章:


打包安装程序太占内存怎么清除(打包安装程序怎么清除缓存)

打包安装程序太占内存怎么清除(打包安装程序怎么清除缓存)

本文目录打包安装程序怎么清除缓存华为手机打包安装程序怎么清理打包安装程序怎么清除数据手机安装软件失败后占大量内存怎么清除打包安装程序太占内存怎么清除华为手机的打包安装程序怎么清理打包安装系统如何清除数据华为软件包安装程序怎么清理打包安装程序

2025年3月30日 11:00

rom是什么意思车上的(rom是什么意思)

rom是什么意思车上的(rom是什么意思)

本文目录rom是什么意思汽车里面rom程序是什么意思rom是指什么汽车中央处理器RAM,ROM,是什么各有什么特点rom是什么意思ROM指只读存储器。只读存储器(Read-Only Memory,ROM)以非破坏性读出方式工作,只能读出无法

2025年3月5日 17:30

办公软件自学app(有没有可以学习办公软件的app 例如学习excel 的)

办公软件自学app(有没有可以学习办公软件的app 例如学习excel 的)

本文目录有没有可以学习办公软件的app 例如学习excel 的办公软件网课app哪个好大家有什么好的学习APP推荐一下在线学习APP哪个适合职场人有没有可以学习办公软件的app 例如学习excel 的学好办公软件的方法:1、多看网上视频,在

2025年2月14日 15:20

cur 是什么意思?哪里有securecrt注册机

cur 是什么意思?哪里有securecrt注册机

本文目录cur 是什么意思哪里有securecrt注册机“cur ”是什么意思cur是什么意思cur 是什么意思  cur是cursor的缩写。  概述  名字  cur是cursor的缩写。 *.cur文件的格式是静态光标文件,它的格

2025年2月10日 05:50

string的substring方法(SUBSTRING的用法是什么)

string的substring方法(SUBSTRING的用法是什么)

本文目录SUBSTRING的用法是什么java string.substring方法有几个参数关于java String类的substring()和equals()方法string中截取指定字符串SUBSTRING的用法是什么方法如下:pu

2025年4月1日 01:00

jitter是什么意思中文(Jetter是什么意思,就这个我不会)

jitter是什么意思中文(Jetter是什么意思,就这个我不会)

本文目录Jetter是什么意思,就这个我不会peak-to-peak jitter是什么意思什么叫时钟漂移(Wander)时钟漂移与时钟抖动(jitter)的区别jitter tolerance是什么意思什么是PCM,什么是Jitterjt

2025年3月27日 14:50

modbustcp(安川modbustcp协议是直接可以使用么)

modbustcp(安川modbustcp协议是直接可以使用么)

本文目录安川modbustcp协议是直接可以使用么modbus tcp协议是什么意思安川modbustcp协议是直接可以使用么是的。Modbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以

2025年3月18日 08:30

回弹模量计算公式原理(回弹模量的千分表怎样记数)

回弹模量计算公式原理(回弹模量的千分表怎样记数)

本文目录回弹模量的千分表怎样记数弹性模量计算公式是什么土基的回弹模量与水泥稳定层的回弹模量路段基层顶面当量回弹模量怎么计算啊弹性模量计算公式路基水泥稳定碎石层的弯沉值怎么计算回弹模量试验检测方法回弹模量的千分表怎样记数回弹模量的千分表记数:

2025年3月10日 04:10

sql必备100句(搜集SQL常用的操作语句)

sql必备100句(搜集SQL常用的操作语句)

本文目录搜集SQL常用的操作语句常用标准SQL语句..sql基本语句有哪些求常用的sql server查询语句,谢谢常用的sql语句sql简单查询语句搜集SQL常用的操作语句结构化查询语言(Structured Query Language

2025年3月16日 09:40

vue八个生命周期面试题(vue.js的生命周期有什么用)

vue八个生命周期面试题(vue.js的生命周期有什么用)

本文目录vue.js的生命周期有什么用vue2.0函数生命周期怎么理解vue生命周期详解关于Vue实例的生命周期created和mounted的区别vue生命周期是什么vue生命周期是多少Vue实例中生命周期created和mounted的

2025年2月19日 19:20

javascript教程实例(请说明JavaScript中处理事件的步骤)

javascript教程实例(请说明JavaScript中处理事件的步骤)

本文目录请说明JavaScript中处理事件的步骤js怎么获取数组中元素的位置javascript教程求助请说明JavaScript中处理事件的步骤事件处理程序的方式了:1. 设置HTML标签属性为事件处理程序  文档元素的事件处理程序属性

2025年2月14日 11:20

源码资源分享(软件源码免费分享违法吗)

源码资源分享(软件源码免费分享违法吗)

本文目录软件源码免费分享违法吗锦尚中国商业源码论坛的源码什么时候可以下载呢软件源码免费分享违法吗根据查询相关资料显示:不违法。1、一般情况下如果不以牟利为目的去分享资源是不犯法的。2、如果不是合法内容,就肯定不是犯法的。最好查询当地官方网站

2025年2月19日 10:10

incompatible with(incompatible是什么意思)

incompatible with(incompatible是什么意思)

本文目录incompatible是什么意思scala intellij idea编程问题incompatible是什么意思incompatible英They feel strongly that their religion is inco

2025年3月31日 04:20

visible造句(我高三,做英语试卷时大多数单词看不懂,做题目很困难要高考了,怎么办啊)

visible造句(我高三,做英语试卷时大多数单词看不懂,做题目很困难要高考了,怎么办啊)

本文目录我高三,做英语试卷时大多数单词看不懂,做题目很困难要高考了,怎么办啊英语造句~!!!英语好的才可以来!灯的光线动摇不定,忽明忽暗的四字成语是什么可属名词和不可属名词的英语造句共16句英语造句八个英语单词的翻译和造句用几个词造句 英文

2025年3月19日 19:20

php爬虫教程(php 爬虫如何爬取ajax异步加载文件)

php爬虫教程(php 爬虫如何爬取ajax异步加载文件)

本文目录php 爬虫如何爬取ajax异步加载文件用Php写一个爬虫抓取新闻如何用php 编写网络爬虫php 实现网络爬虫php怎么用爬虫解析网页上js生成的图片php的curl怎么爬取网页内容PHP爬虫基础,xampp是干嘛的软件PhpSt

2025年2月28日 02:20

iviews(用iview中cell单元格组件,动态渲染了多个<cell>,当点击某个<cell>时,如何给当前选中<cell>加selected)

iviews(用iview中cell单元格组件,动态渲染了多个<cell>,当点击某个<cell>时,如何给当前选中<cell>加selected)

本文目录用iview中cell单元格组件,动态渲染了多个,当点击某个时,如何给当前选中加selectediview是什么意思用iview中cell单元格组件,动态渲染了多个,当点击某个时,如何给当前选中加selected不知道你的需求是什么

2025年3月21日 02:40

limite(limite是什么意思 《法语助手》法汉)

limite(limite是什么意思 《法语助手》法汉)

本文目录limite是什么意思 《法语助手》法汉布菲bc1103(limite)怎么保养ltd.中文是什么意思limite是什么意思 《法语助手》法汉limite 界limite (élastique, d’écoulement)下屈服点

2025年3月22日 11:40

permission怎么读(permission denied是什么意思)

permission怎么读(permission denied是什么意思)

本文目录permission denied是什么意思英语Permission denied怎么翻译permission denied是什么意思没有权限;拒绝访问permission 读法 英  n. 允许,许可;许可证,书面许可词汇搭配:b

2025年3月27日 07:40

网站网页制作(网站页面制作有哪些技巧)

网站网页制作(网站页面制作有哪些技巧)

本文目录网站页面制作有哪些技巧网页制作网站页面制作有哪些技巧【导读】在当下的企业网络推广阶段中,越来越多的企业网站制作技术越来越娴熟,导致在同行企业网站竞争环境越来越激烈,但是只有少数的企业是赢家。那么,网站页面制作有哪些技巧呢?今天就跟随

2025年3月23日 02:40

exact怎么读(exact意思)

exact怎么读(exact意思)

本文目录exact意思exact 和 export 为什么e的发音不一样,前者发i 后者又发an的音英标都是I,exact怎么读exact意思“exact”的意思是:准确的,精密的;精确的;要求;强求;急需;勒索钱财1、读音:英 2、词性:

2025年3月27日 04:00

近期文章

本站热文

harbor,port,pier的区别?谁能解释“harbour“(港口)与“pier“(码头)的区别
2025-02-22 17:40:03 浏览:18
ibatis foreach(ibatis 批量update操作)
2025-02-10 23:40:06 浏览:7
endless rain(endless rain表达什么情感)
2025-02-14 06:00:02 浏览:6
标签列表

热门搜索