什么是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协议族中的一种。
应用层 (Application):应用层是个很广泛的概念,有一些基本相同的系统级 TCP/IP 应用以及应用协议,也有许多的企业商业应用和互联网应用。 解释:我们的应用程序
传输层 (Transport):传输层包括 UDP 和 TCP,UDP 几乎不对报文进行检查,而 TCP 提供传输保证。 解释;保证传输数据的正确性
网络层 (Network):网络层协议由一系列协议组成,包括 ICMP、IGMP、RIP、OSPF、IP(v4,v6) 等。 解释:保证找到目标对象,因为里面用的IP协议,ip包含一个ip地址
链路层 (Link):又称为物理数据网络接口层,负责报文传输。
Socket一般应用模式(服务器端和客户端)
服务端跟客户端发送信息的时候,是通过一个应用程序 应用层发送给传输层,传输层加头部 在发送给网络层。在加头 在发送给链路层。再加帧,然后在链路层转为信号,通过ip找到电脑 链路层接收。去掉头(因为发送的时候加头了。去头是为了找到里面的数据) 网络层接收,去头 传输层接收。去头 在到应用程序,解析协议。把数据显示出来。
一个Socket简单的通信图解:
1.服务端welcoming socket 开始监听端口(负责监听客户端连接信息)
2.客户端client socket连接服务端指定端口(负责接收和发送服务端消息)
3.服务端welcoming socket 监听到客户端连接,创建connection socket。(负责和客户端通信)
Socket的通讯过程:
服务器端:
申请一个socket 绑定到一个IP地址和一个端口上 开启侦听,等待接授连接
客户端: 申请一个socket 连接服务器(指明IP地址和端口号)
服务器端接到连接请求后,产生一个新的socket(端口大于1024)与客户端建立连接并进行通讯,原监听socket继续监听。
socket的位置
转载于:https://my.oschina.net/u/4167465/blog/3085541
分享到:
相关推荐
6. **《经典SQL语句大全》**:虽然不是直接关于Socket编程,但SQL知识对于处理数据库操作,特别是在构建网络应用时存储和检索数据是必不可少的。 7. **《vb_net socket接收数据》**:专门讨论了VB.NET中如何接收...
在本项目中,"关于SOCKET通信的源代码"提供了一个简单的C++Builder编写的聊天程序,非常适合初学者理解并实践SOCKET编程。 首先,我们要了解SOCKET的基本概念。在操作系统层面,SOCKET是一种进程间通信(IPC)机制...
在本项目中,我们关注的是"关于socket对话的"实现,这通常涉及到客户端和服务器之间的交互,以及一个带有图形用户界面(GUI)的系统,使得用户可以直接参与对话过程。以下是对Socket编程和其在GUI应用中的应用的详细...
### 关于SOCKET中的accept函数详解 #### 一、引言 在计算机网络通信中,套接字(Socket)作为一种重要的通信方式,被广泛应用于不同系统间的通信过程。特别是在服务器编程中,如何处理客户端的连接请求是核心问题之...
本资源"关于socket的小程序.rar"聚焦于利用Socket实现TCP/IP协议栈上的通信,这对于理解网络编程至关重要。 TCP/IP协议栈,全称Transmission Control Protocol/Internet Protocol Suite,是互联网上应用最广泛的...
总的来说,"关于socket的编程开发"涉及到的不仅是Socket接口的使用,还包括网络编程原理、并发处理、数据共享策略、错误处理等多个方面。这个项目为学习和实践网络通信提供了一个良好的平台,同时也提供了深入理解...
Socket是网络编程中的一个重要概念,它是基于TCP/IP通信协议实现的一种通信方式,允许两台计算机通过互联网进行双向通信。在Android开发中,我们经常会用到Socket进行客户端与服务器端的数据交换。下面将详细介绍...
最近做了一个关于socket的基于TCP协议的异步通信系统--TongXing.DLL;它里面封装了通信的一些比较复杂的方法:1:数据加密解密 2:数据失败自动重发 3:心跳模块 4:客户端网络问题断开自动重连 5:服务器自动拒绝...
在C++编程中,Socket是实现网络通信的基本接口,它允许程序通过网络发送和接收数据。本篇文章将深入探讨如何使用C++创建基于Socket的客户端(Client)与服务器端(Server)库。Socket编程通常涉及TCP(传输控制协议...
1. 创建Socket实例:`Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);` 对于Server,使用Stream类型的Socket处理TCP连接;对于Client,同样可以创建一个...
服务器端通过socket()系统调用创建一个Socket数组后(即设定了接受连接客户的最大数目),与指定的本地端口绑定bind(),就可以在端口进行侦听listen()。如果有客户端连接请求,则在数组中选择一个空Socket,将客户端...
Socket编程是网络通信的核心部分,尤其在C#中,它提供了强大的能力来实现客户端与服务器之间的数据传输。本文将深入探讨基于C#的Socket编程,包括基本概念、使用方法以及如何通过源码学习。 首先,Socket是网络上的...
Socket编程在IT行业中是网络通信的基础,特别是在C#开发中,`System.Net.Sockets`命名空间提供了Socket类,用于实现客户端和服务器之间的通信。本示例"socketDemo"旨在展示如何创建一个基本的Socket服务器...
Socket网络编程是计算机网络通信的核心技术之一,它允许客户端...以上就是关于socket网络编程的基础知识,包括TCP和UDP的使用。通过理解这些概念和操作,开发者能够构建自己的客户端和服务器应用,实现跨网络的通信。
Socket编程是计算机网络通信中的重要概念,它提供了一种进程间通信(IPC)的方式,使得运行在不同设备上的应用程序能够相互通信。本教程将针对初学者,详细讲解Socket的基本概念、工作原理以及如何在实际应用中使用...
在提供的文件名称列表"SocketTest3"中,我们可以推测这可能是一个Socket测试工具的第三个版本,或者包含一系列关于Socket测试的案例或代码示例。使用此类工具,开发者可以更好地理解和优化他们的Socket应用程序,...
"文档"很可能包含了更多关于SocketTool的使用方法、示例代码和开发细节。 总的来说,SocketTool是一款全面且强大的网络通信工具,它的多功能性和易扩展性使其成为IT专业人士进行网络调试、开发和管理的理想选择。...
Socket编程是计算机网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。在本文中,我们将深入探讨如何使用Socket实现一个简单的聊天应用。首先,我们需要理解Socket的基本概念。 Socket,也称为套接...
在VC++环境中,SOCKET是Windows API提供的一种用于网络通信的接口,它允许开发者通过标准的文件描述符来实现TCP(传输控制协议)和UDP(用户数据报协议)的网络编程。下面将详细介绍如何在VC++中使用SOCKET实现TCP和...
Socket编程在Java中是网络通信的基础,主要用于实现客户端与服务器之间的数据交换。本文将深入探讨Socket的解析以及如何使用Java实现双方即时通讯。 首先,理解Socket通信的基本过程至关重要。服务端通过创建`...