Socket通讯简介

本文介绍了Socket通讯的基础知识,包括本地进程通信与网络进程通信的区别,详细讲解了Socket的创建、绑定、监听和连接过程。重点阐述了TCP的三次握手建立连接,并提到了网络字节序和主机字节序的转换。最后,强调了Socket编程中理解网络I/O操作的重要性。
摘要由CSDN通过智能技术生成

由于自己在项目参与中断断续续地接触到网络通讯,因此,有必要把之前的经验和问题总结一下:
一、进程通信
进程通信简单可以分为两种:本地进程通讯和网络通讯两个方面:
1、本地进程通讯
主要分为四类(该问题在我第一次实习面试的时候还问过,还好当时答出来了):
1、消息传递(管道、FIFO,消息队列)
2、同步(信号量、条件变量、锁、互斥量)
3、共享内存(匿名和具名的)
4、远程过程调用(Solaris门和Sun RPC)(这个自己也不是很清楚,照搬过来的)
2、网络进程通讯
我们知道,进程PID可以唯一标志一个进程,这在本地进程通讯中是至关重要的,但是在网络通讯中却不一样,但是,TCP/IP协议族帮我们解决了这个问题,回想我们学过的计算机网络结构中:标准的7层架构和非标准的5层架构,网络层的IP地址可以唯一标识一台主机,而传输层中的“协议+端口”可以唯一标志主机中应用程序(进程)。这样有IP+协议+端口 就可以唯一标识网络进程了,网络进程通讯就是依靠这个进行消息的传递和接受。
使用TCP/IP协议的通常采用API的方式:Unix中socket来实现网络进程之间的通讯(Windows包含socket头文件)。
socket简介:
socket起源于Unix,而在Unix和Linux上面,一切皆文件的概念已经深入到每个用户心中,而socket的模式同样类似,open-read/write-close;
socket基本操作

int socket(int domain, int type, int protocol);

socket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket。这个socket描述字跟文件描述字一样,后续的操作都有用到它,把它作为参数,通过它来进行一些读写操作。正如可以给fopen的传入不同参数值,以打开不同的文件。创建socket的时候,也可以指定不同的参数创建不同的socket描述符,socket函数的三个参数分别为:
domain:即协议域,又称为协议族(family)。常用的协议族有,AF_INET、AF_INET6、AF_LOCAL(或称AF_UNIX,Unix域socket)、AF_ROUTE等等。协议族决定了socket的地址类型,在通信中必须采用对应的地址,如AF_INET决定了要用ipv4地址(32位的)与端口号(16位的)的组合、AF_UNIX决定了要用一个绝对路径名作为地址。
type:指定socket类型。常用的socket类型有,SOCK_STREAM、SOCK_DGRAM、SOCK_RAW、SOCK_PACKET、SOCK_SEQPACKET等等(socket的类型有哪些?)。
protocol:故名思意&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值