Socket系列(一)基本概述

一、Socket概述

        Socket是进行网络编程的类,通过Socket可以在两台计算机之间进行网络通讯。比如,QQ软件和QQ服务器之间的通讯就是基于Socket的网络通讯,这个过程的实现大概是这样,用户甲像用户乙发送消息,甲的消息通过Socket发送给服务器,服务器接收到甲的消息后,在通过Socket推送给乙,这样就完成了一次简单聊天通讯。

        Socket编程实现网络通信主要包括客户端和服务端两部分。

        服务器端流程主要有以下几个步骤:创建套接字(socket)、服务绑定(bind)、服务侦听(listen)、处理新到连接(accept)、数据收发(rec/send)、关闭套接字(close)。

        客户端流程主要有以下几个步骤:客户端套接字创建(socket)、发起连接(connect)、数据收发(rec/send)、关闭套接字(close)。

二、Socket网络通讯工作原理

        Socket连接可以使用TCP或者是UDP两种传送层协议,如果使用TCP协议,那么建立起来的Socket连接就是一个TCP连接,接下来就以一个流程图来展示基于TCP协议的Socket连接的工作原理,如下图。

 

三、Socket连接与HTTP连接的区别

        由于通常情况下Socket连接就是TCP连接,因此Socket连接一旦建立,通信双方即可开始相互发送数据内容,直到双方连接断开。但在实际网络应用 中,客户端到服务器之间的通信往往需要穿越多个中间节点,例如路由器、网关、防火墙等,大部分防火墙默认会关闭长时间处于非活跃状态的连接而导致 Socket 连接断连,因此需要通过轮询告诉网络,该连接处于活跃状态。

而HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客户端向服务器发出请求后,服务器端才能回复数据。

很多情况下,需要服务器端主动向客户端推送数据,保持客户端与服务器数据的实时与同步。此时若双方建立的是Socket连接,服务器就可以直接将数据传送 给客户端;若双方建立的是HTTP连接,则服务器需要等到客户端发送一次请求后才能将数据传回给客户端,因此,客户端定时向服务器端发送连接请求,不仅可 以保持在线,同时也是在“询问”服务器是否有新的数据,如果有就将数据传给客户端。(部分内容参考与网络资源)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值