`
wx1568520008
  • 浏览: 20434 次
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

关于Socket

 
阅读更多

什么是Socket?

    Socket是网络上运行的两个程序间双向通讯的一端,它既可以接受请求,也可以发送请求,利用它可以较为方便的编写网络上数据的传递。如在Java中,有专门的Socket类来处理用户的请求和响应。利用Socket类的方法,就可以实现两台计算机之间的通讯。Java中Socket可以理解为客户端或者服务器端的一个特殊的对象,这个对象有两个关键的方法,一个是getInputStream方法,另一个是getOutputStream方法。getInputStream方法可以得到一个输入流,客户端的Socket对象上的getInputStream方法得到的输入流其实就是从服务器端发回的数据流。GetOutputStream方法得到一个输出流,客户端Socket对象上的getOutputStream方法返回的输出流就是将要发送到服务器端的数据流,(其实是一个缓冲区,暂时存储将要发送过去的数据),程序可以对这些数据流根据需要进行进一步的封装。

Socket的两种类型:

    流式Socket(STREAM):是一种面向连接的Socket,针对于面向连接的TCP服务应用,安全,但是效率低;

    数据报式Socket(DATAGRAM):是一种无连接的Socket,对应于无连接的UDP服务应用.不安全(丢失,顺序混乱,在接收端要分析重排及要求重发),但效率高.

 

TCP/IP协议

    TCP/IP(Transmission Control Protocol/Internet Protocol)即传输控制协议/网间协议,是一个工业标准的协议集,它是为广域网(WANs)设计的。

 

UDP协议

    UDP(User Data Protocol,用户数据报协议)是与TCP相对应的协议。它是属于TCP/IP协议族中的一种。

81caaf8a60cf2bace6e57e7b1dcb41f66e0.jpg

    应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用以及应用协议,也有许多的企业商业应用和互联网应用。 解释:我们的应用程序

    传输层 (Transport):传输层包括 UDP 和 TCP,UDP 几乎不对报文进行检查,而 TCP 提供传输保证。 解释;保证传输数据的正确性

    网络层 (Network):网络层协议由一系列协议组成,包括 ICMP、IGMP、RIP、OSPF、IP(v4,v6) 等。 解释:保证找到目标对象,因为里面用的IP协议,ip包含一个ip地址

    链路层 (Link):又称为物理数据网络接口层,负责报文传输。 

 

Socket一般应用模式(服务器端和客户端)

dd3e46e5c8c3c40d568a7f9b6abbd7bb0c2.jpg

    服务端跟客户端发送信息的时候,是通过一个应用程序 应用层发送给传输层,传输层加头部 在发送给网络层。在加头 在发送给链路层。再加帧,然后在链路层转为信号,通过ip找到电脑 链路层接收。去掉头(因为发送的时候加头了。去头是为了找到里面的数据) 网络层接收,去头 传输层接收。去头 在到应用程序,解析协议。把数据显示出来。

 

4b59e9c923c81587c9faf7d6b4d3a99f7c1.jpg

 

一个Socket简单的通信图解

    89fd0d0a9e707b3f8b4e2c012b8a7bcc103.jpg

    1.服务端welcoming socket 开始监听端口(负责监听客户端连接信息)

    2.客户端client socket连接服务端指定端口(负责接收和发送服务端消息)

    3.服务端welcoming socket 监听到客户端连接,创建connection socket。(负责和客户端通信)

 

Socket的通讯过程:

    服务器端:

    申请一个socket 绑定到一个IP地址和一个端口上 开启侦听,等待接授连接

  

      客户端: 申请一个socket 连接服务器(指明IP地址和端口号)

    服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听。

dc9a7957d585ec2667e367a0cb660d8a137.jpg

socket的位置

8b52dbe49ab65d7203bfece25369a0ebcfe.jpg

转载于:https://my.oschina.net/u/4167465/blog/3085541

分享到:
评论

相关推荐

    关于socket资料,新手必学

    6. **《经典SQL语句大全》**:虽然不是直接关于Socket编程,但SQL知识对于处理数据库操作,特别是在构建网络应用时存储和检索数据是必不可少的。 7. **《vb_net socket接收数据》**:专门讨论了VB.NET中如何接收...

    关于SOCKET通信的源代码

    在本项目中,"关于SOCKET通信的源代码"提供了一个简单的C++Builder编写的聊天程序,非常适合初学者理解并实践SOCKET编程。 首先,我们要了解SOCKET的基本概念。在操作系统层面,SOCKET是一种进程间通信(IPC)机制...

    关于socket对话的

    在本项目中,我们关注的是"关于socket对话的"实现,这通常涉及到客户端和服务器之间的交互,以及一个带有图形用户界面(GUI)的系统,使得用户可以直接参与对话过程。以下是对Socket编程和其在GUI应用中的应用的详细...

    关于SOCKET中的accept函数的解释

    ### 关于SOCKET中的accept函数详解 #### 一、引言 在计算机网络通信中,套接字(Socket)作为一种重要的通信方式,被广泛应用于不同系统间的通信过程。特别是在服务器编程中,如何处理客户端的连接请求是核心问题之...

    关于socket的小程序.rar_socket小程序_tcp/ip协议栈

    本资源"关于socket的小程序.rar"聚焦于利用Socket实现TCP/IP协议栈上的通信,这对于理解网络编程至关重要。 TCP/IP协议栈,全称Transmission Control Protocol/Internet Protocol Suite,是互联网上应用最广泛的...

    关于socket的编程开发

    总的来说,"关于socket的编程开发"涉及到的不仅是Socket接口的使用,还包括网络编程原理、并发处理、数据共享策略、错误处理等多个方面。这个项目为学习和实践网络通信提供了一个良好的平台,同时也提供了深入理解...

    关于socket的封装使用

    Socket是网络编程中的一个重要概念,它是基于TCP/IP通信协议实现的一种通信方式,允许两台计算机通过互联网进行双向通信。在Android开发中,我们经常会用到Socket进行客户端与服务器端的数据交换。下面将详细介绍...

    关于socket的基于TCP协议的异步通信系统--TongXing.DLL

    最近做了一个关于socket的基于TCP协议的异步通信系统--TongXing.DLL;它里面封装了通信的一些比较复杂的方法:1:数据加密解密 2:数据失败自动重发 3:心跳模块 4:客户端网络问题断开自动重连 5:服务器自动拒绝...

    C++关于socket的client&server库创建

    在C++编程中,Socket是实现网络通信的基本接口,它允许程序通过网络发送和接收数据。本篇文章将深入探讨如何使用C++创建基于Socket的客户端(Client)与服务器端(Server)库。Socket编程通常涉及TCP(传输控制协议...

    Unity做的一个关于Socket的小案例

    1. 创建Socket实例:`Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);` 对于Server,使用Stream类型的Socket处理TCP连接;对于Client,同样可以创建一个...

    关于socket实现的网络聊天室

    服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空Socket,将客户端...

    一个基于C#的关于Socket编程的源码

    Socket编程是网络通信的核心部分,尤其在C#中,它提供了强大的能力来实现客户端与服务器之间的数据传输。本文将深入探讨基于C#的Socket编程,包括基本概念、使用方法以及如何通过源码学习。 首先,Socket是网络上的...

    socketDemo

    Socket编程在IT行业中是网络通信的基础,特别是在C#开发中,`System.Net.Sockets`命名空间提供了Socket类,用于实现客户端和服务器之间的通信。本示例"socketDemo"旨在展示如何创建一个基本的Socket服务器...

    socket_socket_

    Socket网络编程是计算机网络通信的核心技术之一,它允许客户端...以上就是关于socket网络编程的基础知识,包括TCP和UDP的使用。通过理解这些概念和操作,开发者能够构建自己的客户端和服务器应用,实现跨网络的通信。

    关于socket的一些启蒙知识

    Socket编程是计算机网络通信中的重要概念,它提供了一种进程间通信(IPC)的方式,使得运行在不同设备上的应用程序能够相互通信。本教程将针对初学者,详细讲解Socket的基本概念、工作原理以及如何在实际应用中使用...

    socket test 测试工具

    在提供的文件名称列表"SocketTest3"中,我们可以推测这可能是一个Socket测试工具的第三个版本,或者包含一系列关于Socket测试的案例或代码示例。使用此类工具,开发者可以更好地理解和优化他们的Socket应用程序,...

    Socket工具SocketTool

    "文档"很可能包含了更多关于SocketTool的使用方法、示例代码和开发细节。 总的来说,SocketTool是一款全面且强大的网络通信工具,它的多功能性和易扩展性使其成为IT专业人士进行网络调试、开发和管理的理想选择。...

    关于Socket实现聊天代码

    Socket编程是计算机网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。在本文中,我们将深入探讨如何使用Socket实现一个简单的聊天应用。首先,我们需要理解Socket的基本概念。 Socket,也称为套接...

    VC中关于SOCKET 的实现(TCP/UDP)

    在VC++环境中,SOCKET是Windows API提供的一种用于网络通信的接口,它允许开发者通过标准的文件描述符来实现TCP(传输控制协议)和UDP(用户数据报协议)的网络编程。下面将详细介绍如何在VC++中使用SOCKET实现TCP和...

    关于Socket的解析以及双方即时通讯的java实现方法

    Socket编程在Java中是网络通信的基础,主要用于实现客户端与服务器之间的数据交换。本文将深入探讨Socket的解析以及如何使用Java实现双方即时通讯。 首先,理解Socket通信的基本过程至关重要。服务端通过创建`...

Global site tag (gtag.js) - Google Analytics