socket 编程

1. socket 套接字

Socket 是一个用于网络通信的技术。Socket 通信允许客户端——服务器之间进行双向通信。它可以使任何客户端机器连接到任何服务器,安装在客户端和服务器两侧的程序就可以实现双向的通信。Socket的作用就是把连接两个计算机的通信软件“中间接”起来,能够实现远程连接


socket 是一个编程接口 (网络编程接口),是一种特殊的文件描述符 (write/read/close)


socket 并不仅限于TCP/IP协议

socket 是独立于具体协议的编程接口,这个接口位于TCP / IP四层模型中的应用层与传输层之间


socket类型:

        (1) 流式套接字 (SOCK_STREAM)

                面向字节流,针对传输层协议为TCP的应用

                保证数据传输是可靠的

                提供一种可靠的、面向连接的双向数据传输服务,实现了数据无差错、无重复的发 送。流式套接字内设流量控制,被传输的数据看作是无记录边界的字节流

        (2) 数据报套接字 (SOCK_DGRAM)
                针对传输层协议为UDP的应用
                提供一种无连接的服务,该服务并不能保证数据传输的可靠性

                它提供了一种无连接、不可靠的双向数据传输服务。数据在传输过程中可能会丢失或重复,并且不能保证在接收端按发送顺序接收数据


        (3) 原始套接字(SOCK_RAW)

                直接跳过传输层,该套接字允许对较低层协议 (如IP或ICMP) 进行直接访问,常用于网络协议分析,检验新的网络协议实现,也可用于测试新配置或安装的网络设备


把socket (网络编程接口)当成一个特殊的文件描述符即可

2. TCP网络应用

任何的网络应用都有通信双方:
        服务器(Server) / 客户端(Client)

        

        网络结构:CS架构

TCP套接字编程基本流程:

        TCP网络应用

                TCP   Server

                TCP   Client

        
        任何的网络应用:

                IP(目标主机) + 传输层协议(如何传输) + 端口号(具体应用)

TCP网络应用的数据传输的大致过程:

        (1) 建立连接:

                "三次握手"

        (2) 发送/接收网络数据 (操作socket)

                write / send / sendto
                read / recv / recvfrom

        (3) 关闭连接:

                "四次挥手"


TCP网络应用编程流程:

TCP Server

(1) socket:创建一个套接字


(2) bind:把一个套接字和网络地址绑定到一起

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值