.Net和Java的socket机制比较

socket是基于TCP和UDP协议的高层接口,定义了收发数据的格式。Java的TCP服务中使用的Socket是一 种流机制,即对于编程人员来说,处理socket只需要从Socket中获取流,然后可以像处理本地流一样来进 行数据的收发。

例如:

DataOutputStream outToClient =new DataOutputStream(socket.getOutputStream());
BufferedReader inFromClient =new BufferedReader(new InputStreamReader(socket.getInputStream

()));
String requestMessageLine = inFromClient.readLine();
outToClient.writeBytes(requestMessageLine);

.Net的Socket机制提供了两种实现:一种是直接用Socket类,一种是使用对Socket再次封装的 TcpClient,UdpClient类来实现。.Net提供了一种统一的收发机制:NetworkStream。

TcpClient和Socket的底层都是通过NetworkStream来传送数据的。它们都可以产生一个NetworkStream 。例如:

TcpClient client = server.AcceptTcpClient();
NetworkStream stream = client.GetStream();

.Net的socket和Java的socket在收发数据上的最大不同是:Java的socket可以像普通的流一样操 作。.Net的socket有多种实现方法,可以直接用Socket.send()来发,也可以用NetwordStream来发送,也 可以用TcpClient来发送。但是每种实现在收发数据的时候都是通过显示的对缓冲区进行操作。例如:

byte[] datasize = new byte[4]; networkStream.Write(datasize,0,4);
socket.Send(datasize, 0,datasize.Length, 0);

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索socket
, 数据
, java socket
, 机制
, tcpclient
, socket数据显示
, Java Socket
, networkstream
Socket.Send
java socket 心跳机制、java socket重连机制、java.net.socket、java.net.socket jar、java.net socket编程,以便于您获取更多的相关知识。

时间: 2024-10-01 19:03:51

.Net和Java的socket机制比较的相关文章

Java序列化(Serialization) 机制_java

  Java中,一切都是对象,在分布式环境中经常需要将Object从这一端网络或设备传递到另一端.这就需要有一种可以在两端传输数据的协议.Java序列化机制就是为了解决这个问题而产生. 将对象状态转换成字节流之后,可以用java.io包中各种字节流的类将其保存到文件中,管道到另一线程中或通过网络连接将对象数据发送到另一主机.对象序列化功能非常简单.强大,在RMI.Socket.JMS.EJB都有应用.对象序列化问题在网络编程中并不是最核心的课题,但却相当重要,具有许多实用意义. java对象序列

java 客户端Socket端口问题

问题描述 java 客户端Socket端口问题 tcp问题,客户端Socket提问,getLocalPort(),连接的是本地的服务端,第一次运行是2880,第二次运行是2881,第三次运行是2882,我想了解客户端的端口是怎么回事,端口是怎么分配的? 解决方案 一个连接占用一个端口,分配端口有自己的算法 像这个就是随机分配不常用的 解决方案二: 端口分配没有什么规定,像偶在程序实现 TCP/UDP 的程序中都是随便选一个不常用的端口. 客户端使用什么端口,一般由服务器决定.因为只有尝试连接服务

java基于Socket做一个简单下载器_java

本文实例为大家分享了java基于Socket制作下载器的过程,及相关代码,供大家参考,具体内容如下 1.首先要建立一个服务器用来处理信息并给客户端传输文件(电脑)  我是用电脑开了一个WIFI,手机连上后使用scoket传输的  SERVERIP要根据自己实际情况更改.端口也可以随便更改0~65535,尽量选大一点  import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.Bu

通过java.net.Socket类抓取网页内容

网页 通过 java.net.Socket 类访问一个Web页面,并且返回结果 import java.io.*; import java.net.*; public class FirstSocket { public static void main(String args[]) { //判断参数是否为两个,正确的用法为 FirstSocket 网站 页面 if(args.length!=2) { System.out.println("Usage : FirstSocket host pa

通过java.net.Socket 类抓取网页内容

网页 /** 文件名 : FirstSocket.java 描述 :通过 java.net.Socket 类访问一个Web页面,并且返回结果 作者: 慈勤强 cqq1978@yeah.net 参考:http://java.sun.com **/ import java.io.*;import java.net.*; public class FirstSocket{ public static void main(String args[]) { //判断参数是否为两个,正确的用法为 First

Java中异常机制的深入研究

由于本文旨在探讨Java"异常机制"的深层原理,因此关于"异常"的使用方法都不做详细说明.首先看一段非常熟悉的用于打开一个文件的C程序段: FILE *fp;fp=fopen(filename,"rw");if(fp==NULL){ printf("cannot open file\n"); exit(0);} 在这段程序中,if条件语句中的一段用来处理没有找到指定文件,或者其它原因无法正确打开指定文件.可是如果遇到一个责任心

浅析java的SPI机制

1 SPI机制简介 SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的.在java.util.ServiceLoader的文档里有比较详细的介绍.简单的总结下java spi机制的思想.我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块.jdbc模块的方案等.面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码.一旦代码里涉及具体的实现类,就违反了可拔插的原则

Java日志缓存机制的实现

概述 日志技术为产品的质量和服务提供了重要的支撑.JDK 在 1.4 版本以后加入了日志机制,为 Java 开发人员提供了便利.但这种日志机制是基于静态日志级别的,也就是在程序运行前就需设定下来要打 印的日志级别,这样就会带来一些不便. 在 JDK 提供的日志功能中,日志级别被细化为 9 级,用以 区分不同日志的用途,用来记录一个错误,或者记录正常运行的信息,又或是记录详细的调试信息.由于日志 级别是静态的,如果日志级别设定过高,低级别的日志难以打印出来,从而导致在错误发生时候,难以去追踪 错误

java的线程机制(二) Thread的生命周期

之前讲到Thread的创建,那是Thread生命周期的第一步,其后就是通过start()方法来启动Thread,它会 执行一些内部的管理工作然后调用Thread的run()方法,此时该Thread就是alive(活跃)的,而且我们还可以通 过isAlive()方法来确定该线程是否启动还是终结. 一旦启动Thread后,我们就只能执行一个方 法:run(),而run()方法就是负责执行Thread的任务,所以终结Thread的方法很简单,就是终结run()方法.仔 细查看文档,我们会发现里面有一个