访问网络服务-Go对IPC的支持

本文介绍了Go语言对进程间通信(IPC)的支持,特别是对socket的使用。socket是IPC的重要方法,允许不同计算机或同一计算机不同进程间的通信。Go语言通过os和net包提供了对socket的支持,包括socket的系统调用、通信域(如IPv4、IPv6、Unix域)和类型(如SOCK_DGRAM、SOCK_STREAM)。Go的net包提供了创建不同类型的socket实例的功能,如TCP、UDP和Unix域套接字。
摘要由CSDN通过智能技术生成

访问网络服务-Go对IPC的支持

一、socket与IPC

socket(套接字)是网络编程中最核心内容之一。

1.1 IPC(进程间通信)

IPC(Inter-Process Communication):进程间通信。因此,IPC这个概念,主要定义的是多个进程之间,相互通信的方法。

主要的IPC(进程间通信)的方法有:系统信号(signal)、管道(pipe)、套接字(socket)、文件锁(file lock)、消息队列(message queue)、信号灯(semaphone,也称为信号量)等。

现存的操作系统都对IPC(进程间通信)提供了强有力的支持,尤其是socket。

1.2 socket(套接字)

socket(套接字),是一种IPC(进程间通信)方法。

在众多的IPC方法中,socket是最为通用和灵活的一种:

  • 利用socket进行通信的进程,可以不局限在同一台计算机上;
  • 通信的双方无论存在于世界上的哪个角落,只要能狗通过计算机的网卡端口以及网络进程互联,就可以使用socket;

支持socket的操作系统,会对外提供一套API。跑在它们之上的应用程序会利用这套API,就可以与互联网上的另一台计算机中的其它程序、甚至同一个程序中的其它线程进行通信。

二、Go语言对IPC的支持

Go语言对IPC提供了一定的支持:

  • 在Go的os代码包和os/signal代表包中就有针对系统信号的API;
  • os.Pipe函数可以创建命名管道,而os/exec代码包中对另一类管道(匿名管道)提供了支持;
  • Go语言在net代码包中有对socket支持的程序实体;

2.1 socket 的系统调用

例如,在Linux操作系统中,用于创建socket实例的API,就是由一个名为socket的系统调用代表的。这个系统调用时Linux内核的一部分。

所谓的系统调用,可以理解为特殊的C语言函数。它们是连接应用程序和操作系统内核的桥梁,也是应用程序使用操作系统功能的唯一渠道。

2.2 Go语言的标准库syscall

在Go语言标准库的syscall代码包中,有一个与这个socket系统调用相对应的函数。这两者的函数签名是基本一致的,它们都会接受三个int类型的参数,并会返回一个可以代表文件描述符的结果。

func Socket(domain, typ, proto int) (fd int,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值