`
l4432848
  • 浏览: 255329 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ServerSocket与Socket类

    博客分类:
  • java
阅读更多

ServerSocket与Socket类

TCP套接字协议:

TCP最主要的特征就是能够建立长时间的连接,而且能够保证数据安全的送达,但是速度比较慢。使用TCP进行连接的时候会有三次握手,之后才建立起服务器与客户端的连接,因为TCP的链接习惯是询问对方机器是否存在,不存在就不会建立连接,存在才会建立连接。

示意图:

image

ServerSocket类:

在Java中想要使用TCP协议做编写服务端的话,需要使用到ServerSocke类,这个类是TCP协议的。

TCP协议的操作类都在java.net包下放着,ServerSocket类就是服务器端,服务器插座,Socket这个单词就是插座的意思。

Socket类:

同样是TCP协议并与ServerSocket类相对的是Socket类,这个类是作为一个通讯端、客户端的存在。用于去连接服务器端,这个Socket如果是从ServerSocket拿到的对象,那就是与服务器连接的那个Socket,如果是自己创建的Socket对象,那你就是客户端。

在理论上可以有无限个Socket端来连接ServerSocket端,在ServerSocket端上每有一个Socket端来连接,就会创建与之相对的Socket对象。也就是说ServerSocket端上也有Socket对象,每一个Socket就像插座上的插孔一样,连接着通讯端的Socket对象。

示意图:

image

ServerSocket与Socket类:

ServerSocket类可以编写服务器端,Socket类可以用来编写客户端。创建ServerSocket对象的时候需要声明一个端口号,这样通讯端才能通过端口号去连接。创建Socket对象的时候则需要声明一个IP地址和ServerSocket对象的端口号,这样才能对服务端发出连接请求。在发出连接请求成功连接后,Socket通讯端会创建两个流,一个是InputStream流一个是OutputStream流。同时,ServerSocket服务器端会得到一个Socket对象,然后这个Socket对象也会创建出InputStream流和OutputStream流。

示意图:

image

上面只是粗略的说一下如何建立的连接,实际上ServerSocket服务器端的Socket对象是通过accept();方法得到的,这个方法监听着声明的端口号。一旦有通讯端来连接,就会创建Socket对象,客户端和服务器端建立连接成功之后就通过InputStream流和OutputStream流来进行交互数据。

完整示意图:

image

明白了两个类之间的联系后,我们就开始尝试编写一个服务器端吧。我们使用浏览器作为Socket端,因为浏览器也是TCP协议的,所以可以连接到我们编写的服务器端。(提示:如果确定编写的代码无误,但是浏览器却连接不到编写的服务端,可以更换IE浏览器试一下)

代码示例:

image

运行结果:

image

浏览器会发送一段浏览器的信息:

image

我们还可以使用字节流,读取一些漂亮妹子照片的并通过网络流输出到浏览器上,估计很多屌丝们就精神一震了(手动滑稽)。

代码示例:

image

运行结果:

image

现在我们已经知道如何编写服务器端,并且知道可以使用浏览器作为客户端去进行连接了,那么接下来使用Socket类进行编写一个客户端,简单的与服务器端交互一下数据。服务器端的编写和上面的第一个示例没有区别,就不过多解释。

客户端则是需要声明一个ip地址和端口号,这个端口号是服务器端的端口号,这点要注意。然后同样的通过流来交互数据,读取或输出数据时,需要看一下服务器端是先读取还是先输出,服务器端先读取的话客户端就需要先编写输出数据的代码,否则反之。关于这个谁先读取或输出是没有规定的,都是根据另一端的编写的代码来决定。

服务器端代码示例:

image

客户端代码示例:

image

运行结果:

image

当有两个结果并且想要两个控制台界面时,可以点击这里,选择NewConsoleView新建控制台:

image

image

代码之间的关系示意:

image

多网卡:

多网卡就是一台计算机中有好几个网卡,一般普通PC电脑有两个网卡,一个物理网卡,一个虚拟网卡。笔记本电脑则一般有三个网卡一个无线网卡,一个物理网卡,一个虚拟网卡。

一般在服务器上有很多个网卡,所以就有很多网线接口,因为有些服务器会需要“三合一网络”,“三合一网络”就是将联通、电信、移动的网线都接入到这台服务器里,那这台服务器就能同时使用三个运营商的网络了。

而且因为服务器机房里一般都是有很多台服务器在进行集群,所以也需要一部分网络接口用于连接内部的集群网络,一部分网络接口则连接通过防火墙之类的安全措施过滤后的外部网络。

多网卡服务器图片:

image

分享到:
评论

相关推荐

    有关java线程循环和serversocket和socket的程序借鉴.pdf

    Java 多线程和 Socket ...我们了解了如何使用继承 Thread 类和实现 Runnable 接口来创建线程,以及如何使用 ServerSocket 和 Socket 类来实现服务器端和客户端的通信。这些知识点将为我们以后的学习和开发提供了基础。

    有关java线程循环和serversocket和socket的程序.pdf

    Java 线程循环和 ServerSocket 与 Socket 编程 Java 线程循环是指在 Java 中使用多线程技术来实现循环操作,线程循环输出:线程名 run XX 次!每次循环休眠一定的时间,该时间有属性决定。在 Java 中,可以使用 ...

    ServerSocket、Socket 实现的聊天室

    a) 使用ServerSocket、Socket完成服务端和客户端的连接。 b) 服务端使用多线程的方式可以接受多个客户端。 c) 使用对象的方式,在服务端和客户端之间传送数据。

    socket与serversocket

    socket与serversocket交互信息

    浅出Java Socket编程

    三、ServerSocket与Socket类 1. ServerSocket:服务器端使用ServerSocket来监听特定端口上的连接请求。创建ServerSocket实例并调用accept()方法后,服务器会阻塞等待客户端的连接。一旦有客户端连接,accept()方法会...

    serversocket socket web服务器

    一旦创建,服务器就可以在该端口上等待客户端的连接请求,当有连接请求到来时,`ServerSocket`会返回一个新的`Socket`对象,用于处理与客户端的通信。 `Socket`,另一方面,是Java中的另一关键组件,它代表了网络...

    Socket+ServerSocket代码

    Socket和ServerSocket是Java编程语言中的两个核心网络通信类,它们在实现客户端-服务器应用程序时起着关键作用。本文将深入探讨这两个类的功能、用法以及如何在实际项目中使用它们。 首先,让我们理解ServerSocket...

    Socket与ServerSocket编程实践聊天

    在提供的"Socket与ServerSocket简解.docx"文档中,可能详细介绍了Socket和ServerSocket的工作原理、API使用以及相关的异常处理。而"Socket编程实践源码"则包含了一个具体的实现示例,你可以通过阅读源码进一步理解其...

    Java 实例 - ServerSocket 和 Socket 通信实例源代码+详细指导教程.zip

    在Java编程语言中,`ServerSocket`和`Socket`是用于网络通信的核心类,它们扮演着客户端和服务器之间建立连接并进行数据交换的关键角色。本教程将深入讲解这两个类的使用,并提供完整的源代码实例,帮助你理解网络...

    socket 亲测可用

    3. **ServerSocket与Socket类**:在Java中,`java.net.ServerSocket`类用于服务器端,监听特定端口上的连接请求;而`java.net.Socket`类则用于客户端,用于建立与服务器的连接并进行通信。 4. **服务器端编程**:...

    有关java线程循环和serversocket和socket的程序分享.pdf

    一旦有客户端连接,`ServerSocket`的`accept`方法会返回一个新的`Socket`对象,代表与客户端建立的连接。在这个例子中,`TCPServer`类创建了一个`ServerSocket`并监听命令行参数指定的端口,每当有新的客户端连接,...

    我的socket通讯工具.rar_ServerSocket_c++ Socket服务类_clientsocket

    通过对socket类继承实现软件中的服务端类serversocket和客户端类clientsocket。由于将服务端类和客户端类的调用在一个工程中实现,所以一个程序既可以作为服务端也可以作为客户端。代码中加入了基本的错误处理功能。

    socket-ServerSocket例子

    `Socket`是Java中的客户端套接字类,用于建立与服务器的连接并进行数据交换。以下是`Socket`的基本使用示例: ```java import java.io.*; import java.net.Socket; public class ClientExample { public static ...

    JAVA 简单聊天程序

    #### 二、ServerSocket与Socket类 1. **ServerSocket类**:用于创建服务器端的监听套接字。`ServerSocket(int port)`构造函数接受一个参数,即服务器监听的端口号。例如,在给定代码中,服务器在端口6666上监听。 ...

    socket serverSocket

    在Java编程语言中,`ServerSocket`和`Socket`是实现网络通信的核心类,它们用于构建客户端/服务器架构的应用程序,比如一个简单的聊天系统。在这个系统中,`ServerSocket`扮演服务器端的角色,监听特定端口上的连接...

    使用Socket,ServerSocket编程

    Android完全支持JDK本身的TCP,UDP网络通信API,也可以使用ServerSocket,Socket来建立基于TCP/IP协议的网络通信,也可以使用DatagramSocket,Datagrampacket来建 立基于UDP协议的网络通信

    一个简单的socket/serversocket例子

    本示例提供了一个基础的Socket/Serversocket应用程序,帮助开发者理解如何使用这两个类来构建基本的TCP通信。 首先,我们要理解Socket和ServerSocket的基本概念。Socket是TCP/IP协议的一部分,它代表了客户端与...

    delphi socket(ClientSocket,ServerSocket)简单实例

    在Delphi编程环境中,Socket通信是网络编程的基础,它提供了应用程序与网络协议之间的接口。ClientSocket和ServerSocket是Delphi中用于实现客户端和服务器端通信的组件,它们封装了低级的TCP/IP协议,使得开发者可以...

    北大青鸟socket类教程

    二、Socket类与ServerSocket类 1. Socket类:代表一个网络连接,通常由客户端创建。它包含了IP地址和端口号,用于标识远程服务器。通过Socket对象,我们可以读取和写入数据到远程服务器。 2. ServerSocket类:...

    Java多线程_ServerSocket服务端与客户端通信案例

    Java多线程环境下使用ServerSocket和Socket进行服务端与客户端之间的通信是一个经典的网络编程模型。在这个模型中,服务端使用ServerSocket类监听特定端口,等待客户端的连接请求。而客户端则通过Socket类建立与...

Global site tag (gtag.js) - Google Analytics