史上最全java socket通信

合集下载

socket java 用法

socket java 用法

socket java 用法在Java编程中,Socket是用于实现网络通信的一种机制。

它允许不同的计算机通过网络进行数据交换和通信。

使用Socket,你可以创建基于TCP或UDP协议的网络连接,并发送和接收数据。

以下是使用Socket进行网络通信的步骤:1. 创建服务器端首先,我们需要创建一个服务器端,用于接收来自客户端的连接请求。

可以使用ServerSocket类来实现。

代码示例:```javaServerSocket serverSocket = new ServerSocket(8080);Socket socket = serverSocket.accept();```在上面的代码中,我们创建了一个ServerSocket对象并指定了端口号8080。

然后,使用accept()方法等待客户端的连接请求,并返回一个Socket对象表示与客户端的连接。

2. 创建客户端创建一个客户端来连接服务器并进行通信。

可以使用Socket类来实现。

代码示例:```javaSocket socket = new Socket("localhost", 8080);```在上面的代码中,我们创建了一个Socket对象,并指定了服务器的主机名("localhost")和端口号(8080)。

3. 数据传输一旦建立了连接,我们可以通过Socket对象的输入流和输出流进行数据传输。

可以使用InputStream和OutputStream类来实现。

代码示例:```java// 从客户端发送数据OutputStream outputStream = socket.getOutputStream();outputStream.write("Hello, Server!".getBytes());// 接收服务器发送的数据InputStream inputStream = socket.getInputStream();byte[] buffer = new byte[1024];int length = inputStream.read(buffer);String response = new String(buffer, 0, length);System.out.println("Server response: " + response);```在上面的代码中,我们使用OutputStream将数据发送到服务器,然后使用InputStream接收来自服务器的响应。

Java中的网络编程和Socket通信篇

Java中的网络编程和Socket通信篇

Java中的网络编程和Socket通信篇Java是一种面向对象的编程语言,具有强大的网络编程能力。

在Java中,使用Socket通信可以实现不同计算机之间的数据传输和通信。

本文将介绍Java中的网络编程以及Socket通信的相关知识。

一、网络编程简介网络编程是指在计算机网络环境下进行程序设计和开发的过程。

Java提供了丰富的类和方法来支持网络编程,例如包中的Socket和ServerSocket类,以及java.io包中的InputStream和OutputStream类等。

二、Socket通信基础Socket是一种抽象概念,表示在网络上的一个通信端口。

它可以用于在不同的计算机之间建立通信渠道,实现数据传输和通信。

Socket通信过程包括服务器端和客户端两个角色。

1.服务器端服务器端负责监听来自客户端的连接请求,并接受连接。

以下是服务器端的基本步骤:1)创建一个ServerSocket对象,指定服务器的端口号。

2)调用ServerSocket的accept()方法,监听客户端的连接请求。

3)一旦有客户端连接,通过accept()方法返回一个Socket对象,用于和客户端进行通信。

4)通过Socket对象的InputStream和OutputStream实现数据的读取和写入。

5)通信结束后,关闭Socket连接。

2.客户端客户端负责向服务器端发送连接请求,并进行数据的读取和写入。

以下是客户端的基本步骤:1)创建一个Socket对象,指定服务器的IP地址和端口号。

2)通过Socket对象的InputStream和OutputStream实现数据的读取和写入。

3)通信结束后,关闭Socket连接。

三、实例演示:客户端与服务器端的简单通信接下来,我们将通过一个实例来演示如何在Java中进行Socket通信。

1.服务器端代码:```javaimport java.io.*;import .*;public class Server {public static void main(String[] args) throws Exception {ServerSocket serverSocket = new ServerSocket(8888);System.out.println("服务器已启动,等待客户端连接...");Socket socket = serverSocket.accept();System.out.println("客户端已连接!");InputStream inputStream = socket.getInputStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));String message = bufferedReader.readLine();System.out.println("客户端发送的消息是:" + message);OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write("已收到消息!");bufferedWriter.flush();bufferedReader.close();bufferedWriter.close();socket.close();serverSocket.close();}}```2.客户端代码:```javaimport java.io.*;import .*;public class Client {public static void main(String[] args) throws Exception {Socket socket = new Socket("localhost", 8888);System.out.println("已经连接到服务器!");OutputStream outputStream = socket.getOutputStream();BufferedWriter bufferedWriter = new BufferedWriter(new OutputStreamWriter(outputStream));bufferedWriter.write("你好,服务器!");bufferedWriter.newLine();bufferedWriter.flush();InputStream inputStream = socket.getInputStream();BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));String response = bufferedReader.readLine();System.out.println("服务器的响应是:" + response);bufferedWriter.close();bufferedReader.close();socket.close();}}```以上代码演示了一个简单的Socket通信过程,其中服务器端监听端口为8888,客户端连接到服务器并向其发送消息,服务器端接收消息并回复已收到的消息。

java中socket的用法

java中socket的用法

java中socket的用法Java中的Socket是一种网络通信协议,它可以在不同的计算机之间进行数据传输。

Socket是一种基于TCP/IP协议的网络通信协议,它可以在不同的计算机之间进行数据传输。

在Java中,Socket是一个类,它提供了一种简单的方式来实现网络通信。

Socket的用法在Java中,Socket的用法非常简单。

首先,我们需要创建一个Socket对象。

这个对象可以用来连接到另一个计算机上的Socket 对象。

在创建Socket对象时,我们需要指定要连接的计算机的IP 地址和端口号。

例如,下面的代码创建了一个Socket对象,它连接到IP地址为192.168.1.100,端口号为8080的计算机上:```Socket socket = new Socket("192.168.1.100", 8080);```一旦我们创建了Socket对象,我们就可以使用它来进行数据传输。

在Java中,Socket提供了两个流来进行数据传输:InputStream 和OutputStream。

InputStream用于从Socket中读取数据,而OutputStream用于向Socket中写入数据。

例如,下面的代码从Socket中读取数据:```InputStream inputStream = socket.getInputStream();byte[] buffer = new byte[1024];int len = inputStream.read(buffer);String data = new String(buffer, 0, len);```这个代码片段首先获取了Socket的InputStream对象,然后创建了一个1024字节的缓冲区。

接下来,它调用了InputStream的read()方法来读取数据,并将读取的数据存储在缓冲区中。

最后,它将缓冲区中的数据转换为字符串。

Java网络编程入门指南和Socket通信

Java网络编程入门指南和Socket通信

Java网络编程入门指南和Socket通信Chapter 1: Java网络编程概述Java是一种具有广泛应用的编程语言,其中网络编程是其重要的一部分。

本章节将对Java网络编程进行介绍,包括其基本概念和使用方法。

Java网络编程是指使用Java语言进行网络通信的技术。

它使得程序可以通过网络连接来进行数据传输和通信,实现不同计算机之间的交流。

Java网络编程的核心是Socket技术,通过Socket,程序可以建立网络连接并进行数据传输。

Chapter 2: Socket通信基础Socket是Java中用于网络通信的基础类。

本章节将详细介绍Socket的使用方法以及常用的网络通信模型。

2.1 Socket的概念和分类Socket是一种用于网络通信的抽象概念,它可以理解为一种通信端点,用于建立网络连接和进行数据传输。

Socket可以分为ServerSocket和Socket两种类型,分别用于服务端和客户端的通信。

2.2 Socket通信模型Java Socket通信模型主要分为两种:TCP(传输控制协议)和UDP(用户数据报协议)。

本节将详细介绍TCP和UDP的特点、用途以及区别。

Chapter 3: TCP Socket编程TCP(传输控制协议)是一种可靠的、面向连接的协议。

本章节将介绍TCP Socket编程的基本概念和使用方法,并给出一个示例程序来演示TCP Socket通信的实现过程。

3.1 TCP Socket通信的建立与关闭在进行TCP Socket通信之前,需要先建立连接并完成数据传输后再进行关闭操作。

本节将介绍TCP Socket通信的建立和关闭方法。

3.2 TCP Socket通信的示例程序为了帮助读者更好地理解TCP Socket编程,本节将给出一个TCP Socket通信的示例程序,包括服务端和客户端的代码实现,并分步解析程序的运行过程。

Chapter 4: UDP Socket编程UDP(用户数据报协议)是一种不可靠的、面向无连接的协议。

java socket 原理

java socket 原理

java socket 原理
Java的Socket是一种用于网络通信的机制。

它基于TCP/IP协议,通过建立客户端和服务器之间的网络连接来实现数据传输。

Socket通信的原理如下:
1. 服务器端:服务器端通过ServerSocket对象创建一个套接字,并监听指定端口,等待客户端的连接请求。

2. 客户端:客户端通过Socket对象创建一个套接字,并指定
服务器的IP地址和端口号,发起连接请求。

3. 服务器端接受连接:当服务器端收到客户端的连接请求时,通过accept()方法接受连接,并创建一个新的线程来处理客户
端的请求。

4. 客户端发送数据:客户端通过Socket对象的输出流将要发
送的数据写入到套接字中,通过网络发送给服务器端。

5. 服务器端接收数据:服务器端通过Socket对象的输入流从
套接字中读取客户端发送的数据。

6. 客户端接收响应:客户端通过Socket对象的输入流从套接
字中读取服务器端发送的响应数据。

7. 服务器端发送响应:服务器端通过Socket对象的输出流将
要发送的响应数据写入到套接字中,通过网络发送给客户端。

这样,客户端和服务器端之间可以进行双向的数据传输。

通过Socket编程,不同的应用程序可以在网络上进行数据交换和通信。

JAVA-Socket-双工通讯实现方案

JAVA-Socket-双工通讯实现方案

一 基本概念1.1 Socket 概念Socket 的准确定义是操作系统提供给应用调用网络协议收发信息的组件,在主流编程语言或者相关SDK 中都有相关的编程组件提供.在JAVA 中,就是 包中提供了ServerSocket 和Socket 等相关类来实现的。

Socket 桥接的是业务系统和传输系统,主要针对高实时性,大并发量的数据传输场景,比如监控视频流传输和物联网数据传输等。

1.2 双工模式客户端与服务端建立通道后,即可相互传输信息和回应信息,通过一个socket 通道来发送和回复消息即可以认为是双工模式,相对的单工模式就是在两条通道来分别发送和接收消息,由于信息的读写欧式阻塞的,所有需要开启对应守护进程来分别处理消息发送和接收:ServerScoketHandlerSocket SocketHandler a c c e p t1.3 网络上的数据网络传输的数据一般都是以流,更细的情况以包的形式来传输数据的,就是一组byte 数组的形式,所以上层应用我们熟悉的编码和格式化数据在此范畴可能都是被弱化的,所以数据传输的方案应该是基于流和包的模式,这就要求要将业务数据转换,分割,装饰,组合然后按交换协议在客户端和服务端之间传输数据。

1.4 网络字节序为了数据可以在socket上进行传输,我们需要先对数据进行序列化处理,本文主要介绍字符串类型数据和结构体类型的数据块序列化和传输的方案。

对于分组或者按数据类型单元去组合传输数据的,要注意字节是大端字节序(高位字节排放在网络字节流的高位)还是小端的字节序(低位字节排放在网络字节流的高端)的,并在客户端解包时按需调节字节序。

这个和操作系统,编程语言甚至编程SDK提供的装饰器有关。

一般情况下,C++是小端发送模式,JAVA,GO等是大端发送i)模式。

这里要和存储字节序有一些区分。

简单的类比就是:如果要传输数据的数据是:1234567890,高端是先把1(万位)压到管道里就是大端,而先把数据5(个位)压到管道里就是小端(实际情况要根据数据的byte 编码类型来具体处理)。

Java中Socket编程指南

Java中Socket编程指南

Java中Socket编程指南引言:Socket编程是计算机网络通信中非常重要的一部分,它是实现网络通信的基础。

在Java中,Socket编程是通过Java的Socket类和ServerSocket类来实现的。

本文将为大家介绍Java中Socket编程的基本概念、使用方法以及一些常见的应用场景。

一、Socket编程基础1. Socket是什么?Socket是计算机网络中两台计算机之间进行通信的一种方式。

它可以理解为一种“插座”,用于连接两台计算机之间的通信端口。

2. Socket的类型在Java中,Socket分为两种类型:客户端Socket和服务端Socket。

客户端Socket用于向服务端发起连接请求,而服务端Socket用于接收客户端的连接请求。

3. Socket的通信过程Socket通信的过程可以简单描述为以下几个步骤:(1)服务端创建一个ServerSocket对象,并指定一个端口号。

(2)客户端创建一个Socket对象,并指定服务端的IP地址和端口号。

(3)客户端向服务端发送连接请求。

(4)服务端接收到客户端的连接请求后,创建一个Socket对象与客户端进行通信。

(5)客户端和服务端通过Socket对象进行数据的发送和接收。

4. Socket编程的基本类在Java中,Socket编程主要涉及以下几个类:(1)Socket类:用于创建客户端Socket对象,实现客户端与服务端的通信。

(2)ServerSocket类:用于创建服务端Socket对象,实现服务端的监听和接收客户端连接请求。

(3)InputStream类和OutputStream类:用于实现数据的输入和输出。

二、Socket编程的使用方法1. 客户端Socket的使用方法客户端Socket的使用方法如下所示:(1)创建一个Socket对象,并指定服务端的IP地址和端口号。

(2)通过Socket对象的getOutputStream()方法获取输出流,用于向服务端发送数据。

Java基础,Socket通信入门学习

Java基础,Socket通信入门学习

Java基础,Socket通信⼊门学习 ⼀、⽹络基础 1、InetAddress InetAddress构造器私有,可以通过多种⽅式获得inetAddress对象 InetAddress ip=InetAddress.getLocalHost();//获取本机IP ip=InetAddress.getByName("100.64.141.89");//通过名字获取指定地址IP String name=ip.getHostName();//通过IP获取IP名字 2、URL统⼀资源定位符 典型构成:1、⽹络协议();2、主机地址(192.168.46.20/myServlet);3、端⼝号(80);4、资源路径(crm/index.jsp);5、查询地址(gid=117) //构造器多种,可以采⽤指定URL连接构造⼀个URL,也可以使协议,⽤端⼝号,⽂件名等信息构成URL String str="192.168.46.254:8888/easyBuy/crm/index.jsp"; URL url=new URL(str); String protocol=url.getProtocol();// 获取协议 String host=url.getHost();// 主机名 int port=url.getPort();//端⼝号 对资源⽂件的⼀般操作 String file=url.getFile();//获取资源中包含的⽂件名称 InputStream is=url.openStream();//打开此URL连接(URLConnection),并获取连接的输⼊流( URLconnection.getOutputStream()) 对URL地址进⾏转码,解码,防⽌乱码 String str1=URLEncoder.encode(str, "UTF-8");//对str字符串进⾏UTF-8转码 String str2=URLDecoder.decode(str1, "UTF-8");//解码 3、HttpURLConnection 继承URLConnection类;Http协议简介 http是⼀个⽆状态协议,请求、响应协议由请求头和响应头构成。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java socket通信1:简介Java语言从一开始就是为了让人们使用互联网而设计的,它为实现程序的相互通信提供了许多有用的抽象应用程序接口(API,Application Programming Interface),这类应用程序接口被称为套接字(sockets)。

信息(information)是指由程序创建和解释的字节序列。

在计算机网络环境中,这些字节序列被称为分组报文(packets)。

一组报文包括了网络用来完成工作的控制信息,有时还包括一些用户数据。

用于定位分组报文目的地址的信息就是一个例子。

路由器正是利用了这些控制信息来实现对每个报文的转发。

协议(protocol)相当于是相互通信的程序间达成的一种约定,它规定了分组报文的交换方式和它们包含的意义。

一组协议规定了分组报文的结构(例如报文中的哪一部分表明了其目的地址)以及怎样对报文中所包含的信息进行解析。

设计一组协议,通常是为了在一定约束条件下解决某一特定的问题。

比如,超文本传输协议(HTTP,HyperText Transfer Protocol)是为了解决在服务器间传递超文本对象的问题,这些超文本对象在服务器中创建和存储,并由Web浏览器进行可视化,以使其对用户有用。

即时消息协议是为了使两个或更多用户间能够交换简短的文本信息。

Application:应用程序;Socket:套接字;Host:主机;Channel:通信信道;Ethernet:以太网;Router:路由器;Network Layer:网络层;Transport Layer:传输层。

IP协议提供了一种数据报服务:每组分组报文都由网络独立处理和分发,就像信件或包裹通过邮政系统发送一样。

为了实现这个功能,每个IP报文必须包含一个保存其目的地址(address)的字段,就像你所投递的每份包裹都写明了收件人地址。

(我们随即会对地址进行更详细的说明。

)尽管绝大部分递送公司会保证将包裹送达,但IP协议只是一个"尽力而为"(best-effort)的协议:它试图分发每一个分组报文,但在网络传输过程中,偶尔也会发生丢失报文,使报文顺序被打乱,或重复发送报文的情况。

IP协议层之上称为传输层(transport layer)。

它提供了两种可选择的协议:TCP协议和UDP协议。

这两种协议都建立在IP层所提供的服务基础上,但根据应用程序协议(application protocols)的不同需求,它们使用了不同的方法来实现不同方式的传输。

TCP协议和UDP协议有一个共同的功能,即寻址。

回顾一下,IP协议只是将分组报文分发到了不同的主机,很明显,还需要更细粒度的寻址将报文发送到主机中指定的应用程序,因为同一主机上可能有多个应用程序在使用网络。

TCP协议和UDP协议使用的地址叫做端口号(port numbers),都是用来区分同一主机中的不同应用程序。

TCP协议和UDP协议也称为端到端传输协议(end-to-end transport protocols),因为它们将数据从一个应用程序传输到另一个应用程序,而IP协议只是将数据从一个主机传输到另一主机。

TCP协议能够检测和恢复IP层提供的主机到主机的信道中可能发生的报文丢失、重复及其他错误。

TCP协议提供了一个可信赖的字节流(reliable byte-stream)信道,这样应用程序就不需要再处理上述的问题。

TCP协议是一种面向连接(connection-oriented)的协议:在使用它进行通信之前,两个应用程序之间首先要建立一个TCP连接,这涉及到相互通信的两台电脑的TCP部件间完成的握手消息(handshake messages)的交换。

使用TCP协议在很多方面都与文件的输入输出(I/O, Input/Output)相似。

实际上,由一个程序写入的文件再由另一个程序读取就是一个TCP连接的适当模型。

另一方面,UDP协议并不尝试对IP层产生的错误进行修复,它仅仅简单地扩展了IP协议"尽力而为"的数据报服务,使它能够在应用程序之间工作,而不是在主机之间工作。

因此,使用了UDP协议的应用程序必须为处理报文丢失、顺序混乱等问题做好准备。

在TCP/IP协议中,有两部分信息用来定位一个指定的程序:互联网地址(Internet address)和端口号(port number)。

其中互联网地址由IP协议使用,而附加的端口地址信息由传输协议(TCP或IP协议)对其进行解析。

互联网地址由二进制的数字组成,有两种型式,分别对应了两个版本的标准互联网协议。

现在最常用的版本是版本4,即IPv4,另一个版本是刚开始开发的版本6,即IPv。

IPv4的地址长32位,只能区分大约40亿个独立地址,对于如今的互联网来说,这是不够大的。

(也许看起来很多,但由于地址的分配方式的原因,有很多都被浪费了)出于这个原因引入了IPv6,它的地址有128位长。

一台主机,只要它连接到网络,一个互联网地址就能定位这条主机。

但是反过来,一台主机并不对应一个互联网地址。

因为每台主机可以有多个接口,每个接口又可以有多个地址。

(实际上一个接口可以同时拥有IPv4地址和IPv6地址)。

端口号是一组16位的无符号二进制数,每个端口号的范围是1到65535。

(0被保留)。

每个版本的IP协议都定义了一些特殊用途的地址。

其中值得注意的一个是回环地址(loopback address),该地址总是被分配个一个特殊的回环接口(loopback interface)。

回环接口是一种虚拟设备,它的功能只是简单地将发送给它的报文直接回发给发送者。

IPv4的回环地址是127.0.0.1[,IPv6的回环地址是0:0:0:0:0:0:0:1。

IPv4地址中的另一种特殊用途的保留地址包括那些"私有用途"的地址。

它们包括IPv4中所有以10或192.168开头的地址,以及第一个数是172,第二个数在16到31的地址。

(在IPv6中没有相应的这类地址)这类地址最初是为了在私有网络中使用而设计的,不属于公共互联网的一部分。

现在这类地址通常被用在家庭或小型办公室中,这些地方通过NAT(Network Address Translation,网络地址转换)设备连接到互联网。

NAT设备的功能就像一个路由器,转发分组报文时将转换(重写)报文中的地址和端口。

更准确地说,它将一个接口中报文的私有地址端口对(private address, port pairs)映射成另一个接口中的公有地址端口对(public address, port pairs)。

这就使一小组主机(如家庭网络)能够有效地共享同一个IP地址。

重要的是这些内部地址不能从公共互联网访问。

多播(multicast)地址。

普通的IP地址(有时也称为"单播"地址)只与唯一一个目的地址相关联,而多播地址可能与任意数量的目的地址关联。

IPv4中的多播地址在点分格式中,第一个数字在224到239之间。

IPv6中,多播地址由FF开始。

习惯于通过名字来指代一个主机,例如:。

然而,互联网协议只能处理二进制的网络地址,而不是主机名。

首先应该明确的是,使用主机名而不使用地址是出于方便性的考虑,这与TCP/IP提供的基本服务是相互独立的。

你也可以不使用名字来编写和使用TCP/IP应用程序。

当使用名字来定位一个通信终端时,系统将做一些额外的工作把名字解析成地址。

有两个原因证明这额外的步骤是值得的:第一,相对于点分形式(或IPv6中的十六进制数字串),人们更容易记住名字;第二,名字提供了一个间接层,使IP 地址的变化对用户不可见。

如网络服务器的地址就改变过。

由于我们通常都使用网络服务器的名字,而且地址的改变很快就被反应到映射主机名和网络地址的服务上,如从之前的地址208.164.121.48对应到了现在的地址,这种变化对通过名字访问该网络服务器的程序是透明的。

名字解析服务可以从各种各样的信息源获取信息。

两个主要的信息源是域名系统(DNS,Domain Name System)和本地配置数据库。

DNS是一种分布式数据库。

DNS协议允许连接到互联网的主机通过TCP或UDP协议从DNS数据库中获取信息。

本地配置数据库通常是一种与具体操作系统相关的机制,用来实现本地名称与互联网地址的映射。

客户端(client)和服务器(server)这两个术语代表了两种角色:客户端是通信的发起者,而服务器程序则被动等待客户端发起通信,并对其作出响应。

客户端与服务器组成了应用程序(application)。

服务器具有一定的特殊能力,如提供数据库服务,并使任何客户端能够与之通信。

一个程序是作为客户端还是服务器,决定了它在与其对等端(peer)建立通信时使用的套接字API的形式(客户端的对等端是服务器,反之亦然)。

更进一步来说,客户端与服务器端的区别非常重要,因为客户端首先需要知道服务器的地址和端口号,反之则不需要。

如果有必要,服务器可以使用套接字API,从收到的第一个客户端通信消息中获取其地址信息。

这与打电话非常相似:被呼叫者不需要知道拨电话者的电话号码。

就像打电话一样,只要通信连接建立成功,服务器和客户端之间就没有区别了。

服务器可以使用任何端口号,但客户端必须能够获知这些端口号。

在互联网上,一些常用的端口号被约定赋给了某些应用程序。

Socket(套接字)是一种抽象层,应用程序通过它来发送和接收数据,就像应用程序打开一个文件句柄,将数据读写到稳定的存储器上一样。

一个socket允许应用程序添加到网络中,并与处于同一个网络中的其他应用程序进行通信。

一台计算机上的应用程序向socket 写入的信息能够被另一台计算机上的另一个应用程序读取,反之亦然。

Applications:应用程序;TCP sockets:TCP套接字;TCP ports:TCP端口;Socket References:套接字引用;UDP sockets:UDP套接字;Sockets bound to ports:套接字绑定到端口;UDP ports:UDP端口。

不同类型的socket与不同类型的底层协议族以及同一协议族中的不同协议栈相关联。

现在TCP/IP协议族中的主要socket类型为流套接字(sockets sockets)和数据报套接字(datagram sockets)。

流套接字将TCP作为其端对端协议(底层使用IP协议),提供了一个可信赖的字节流服务。

一个TCP/IP流套接字代表了TCP连接的一端。

数据报套接字使用UDP协议(底层同样使用IP协议),提供了一个"尽力而为"(best-effort)的数据报服务,应用程序可以通过它发送最长65500字节的个人信息。

相关文档
最新文档