); 返回:若成功返回非负数,若失败返回-1 family表示协议族,协议族取值如表1所示: family 说明 AF_INET IPv4协议 AF_INET6 IPv6协议 AF_LOCAL Unix...域协议 AF_ROUTE 路由套接字 AF_KEY 密钥套接字 表1 协议族family取值 type表示套接字类型,套接字类型type如表2所示: type 说明 SOCK_STREAM 字节流套接字...SOCK_DGRAM 数据报套接字 SOCK_SEQPACKET 有序分组套接字 SOCK_RAW 原始套接字 表2 套接字类型 protocol表示某个协议类型常值,或者设置为0,以选择family...指定了协议族(IPv4、Ipv6或Unix)和套接字类型(字节流、数据报或原始套接字),并没有指定本地协议地址或远程协议地址。... servaddr:套接字地址结构的指针 addrlen:套接字地址结构的大小 套接字地址结构必须含有服务器的IP地址和端口号。
触发学习UNIX网络编程的动力在于前段时间需要开发一个接入服务,需要考虑比较高的并发处理能力,且尽量少占用的机器资源,选用了JAVA的Netty框架,学习过程产生不少疑问,限于基础知识太薄弱无法理解原理...,所以开始关注UNIX编程。...] 指定协议簇 : AF_INET(IPv4) AF_INET6(IPv6) AF_LOCAL(UNIX协议) AF_ROUTE(路由套接字) AF_KEY(秘钥套接字) [type]...指定套接字类型 : SOCK_STREAM(字节流套接字)、 SOCK_DGRAM(数据报套接字)、SOCK_SEQPACKET(有序分组套接字)、 ROCK_RAW(原始套接字...[sockfd] socket函数返回的套接字描述符 [myaddr] 是指向本地IP地址的通用套接字结构 [addrlen] 特定套接字结构的长度(IPv4、IPv6、Unix
这里主要介绍命名UNIX域套接字 1.什么是UNIX域套接字 Unix域协议并不是一个实际的协议族,而是在单个主机上执行客户/服务通信的一种方式。是进程间通信(IPC)的一种方式。...它提供了两类套接字:字节流套接字(有点像TCP)和数据报套接字(有点像UDP) UNIX域数据报服务是可靠的,不会丢失消息,也不会传递出错。...2.UNIX域协议特点 1)UNIX域套接字域TCP套接字相比,在同一台主机的传输速度前者是后者的两倍。...UNIX域套接字仅仅复制数据,并不执行协议处理,不需要添加或删除网络报头,无需计算校验和,不产生顺序号,也不需要发送确认报文 2)UNIX域套接字可以在同一台主机上各进程之间传递文件描述符 3)UNIX...; /* AF_UNIX 或者 AF_LOCAL */ char sun_path[UNIX_PATH_MAX]; /* path name */ }; 4.使用实例,编程套路跟TCP很像。
关于什么是UNIX域套接字可以参考:https://cloud.tencent.com/developer/article/1018893 这里主要介绍非命名的UNIX域套接字的用法。...功能:创建一个全双工的流管道 参数: domain:协议家族,为AF_LOCAL或AF_UNIX type:套接字类型。可以是SOCK_STREAM或者SOCK_DGRAM。...为0 sv:返回套接字对,这个是输出参数。返回的两个描述符都是可读可写的。 返回值:成功返回0,失败返回-1....注意:由于创建的每个套接字都是没有名字的,这就意味着无关进程不能使用它们。 2.一个简单的例子: 父进程给子进程发送一个数据给子进程,子进程收到数据后最数据进行加一操作,再发回给父进程。...2)普通的TCP UDP套接字是不能传递文件描述符的
目录 1、一个简单的时间获取服务器的程序 2、套接字篇 2.1 套接字简介 2.2 套接字中常用的函数 2.3 基本TCP套接字编程 2.3.1、socket函数 2.3.2 connect函数 2.3.3...值-结果参数返回的结果:如果套接字地址结构是固定长度(如IPv4 (16) 和IPv6 (28) ),则返回值总是固定长度;对于可变长度(unix域等),返回值可能小于该结构的最大长度。...return(-1); /* error */ } *ptr = 0; return(n); } /* end readline */ 2.3 基本TCP套接字编程...family 说明 AF_INET IPv4协议 AF_INET6 IPv6协议 AF_LOCAL Unix域协议 AF_ROUTE 路由套接字 AF_KEY 密匙套接字 socket函数的type常值...当这个函数是将该结构从用户空间传递到内核空间时,传递的长度是一个值,主要的目的是:由于有可能该结构是变长的,比如Unix,Datalink套接字地址结构就是变长的,告诉内核这个结构占用的最大的空间,如果对该结构进行写操作的话
Socket编程进行的是端到端的通信,意识不到中间经过多少局域网、路由器,因而能设置参数,也只能是端到端协议之上网络层和传输层的。...建立连接后,进行一个while循环: 客户端发了收 服务端收了发 这只是网络编程第一步,使用这种方法,只能一对一沟通。 若你是个服务器,同时只能服务一个客户,那肯定不行。
UNIX域套接字与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍。这是因为,IPC机制本质上是可靠的通讯,而网络协议是为不可靠的通讯设计的。...UNIX Domain Socket与网络socket编程最明显的不同在于地址格式不同,用结构体sockaddr_un表示,网络编程的socket地址是IP地址加端口号,而UNIX Domain Socket... domain socket与TCP套接字相比较,在同一台主机的传输速度前者是后者的两倍。...三、UNIX域套接字编程注意点 1、bind成功将会创建一个文件,权限为0777 & ~umask 2、sun_path最好用一个绝对路径 3、UNIX域协议支持流式套接口与报式套接口 4、UNIX...即父进程持有sockfds[0] 套接字进行读写,而子进程持有sockfds[1] 套接字进行读写。 参考: 《Linux C 编程一站式学习》 《TCP/IP详解 卷一》 《UNP》
Unix套接字通信之Udp tcp和udp的区别 Tcp是可靠、稳定的,需要经过三次握手来建立连接,收发消息经过确认、Udp是不可靠的、不需要建立连接 Tcp需要建立连接确认,速度要比Udp不需要经过连接的慢一点...Tcp因需要连接,以及收发确认,占用的系统资源可能多点 Tcp可以发送少量数据,而Udp可以发送大量数据 在外网Udp是不可靠的,但基于Unix本地域通信的Udp是可靠的 服务端代码示例 <?...'; //创建socket $socket = socket_create(AF_UNIX,SOCK_DGRAM,0); //bind 到文件 socket_bind($socket,$file);...while (1) { //从套接字接收数据,无论它是否面向连接 $len = socket_recvfrom($socket,$data,1024,0,$clinetFile);...'; $file = 'unix_udp_client'; //创建socket $socket = socket_create(AF_UNIX,SOCK_DGRAM,0); //绑定客户端文件,不绑定则服务端无法给客户端发送消息
IPv4套接字地址结构: 通常也被成为“网际套接字地址结构”,以sockaddr_in命名,定义在头文件中。 ...以上是IPv4套接字地址结构,然而套接字函数是通用的,并且总是接收一个套接字地址结构的指针(eg, sockaddr_in serv; bind(sockfd, (sockaddr *) &serv,...在套接字函数定义的时候,还没有通用的指针类型void *,所以必须传入一个恰当的类型,否则会报错,于是在定义了一个通用的套接字地址结构。...通用套接字地址结构用途就是对指向特定于协议的套接字地址结构的指针执行类型强制转换。...值-结果参数返回的结果:如果套接字地址结构是固定长度(如IPv4 (16) 和IPv6 (28) ),则返回值总是固定长度;对于可变长度(unix域等),返回值可能小于该结构的最大长度。
目录 Socket - 套接字编程 Socket 通信流程图 Socket模块 socket()方法 部分参数 bind()方法 listen()方法 accept()方法 accept()函数返回值:...connect() 方法 close()方法 服务端客户端对比 简单案例 简易通信循环 优化通信循环 黏包问题 Struct 模块 规定报头 解决黏包问题 上传文件案例 UDP通信 Socket - 套接字编程...:TCP协议(默认采用,流式协议) SOCK_DGRAM:UDP协议 SOCK_RAW:原始套接字 proto参数是协议标志,默认为0,原始套接字需要指定值 部分源码 bind()方法...绑定函数的作用就是为调用socket()函数产生的套接字分配一个本地协议地址,建立地址与套接字的对于关系; # 源码 def bind(self, address: Union[_Address,...# 接收数据 data = client.recv(1024) print(data) # 关闭套接字 client.close() ---- 简易通信循环 光发一条消息不够过瘾是吧,如何通信循环
Unix套接字简介 Unix套接字(Unix domain sockets)是一种用于同一主机上进程间通信(IPC,Inter-Process Communication)的机制。...与网络套接字不同,Unix套接字不使用网络协议栈,因此性能更高。它们主要用于需要高效、低延迟的本地进程通信场景。...Unix套接字的类型 流套接字(SOCK_STREAM): 提供面向连接的、可靠的字节流服务,类似于TCP。 数据传输具有顺序和可靠性保障。...Unix套接字的工作流程 服务器端操作流程: 创建套接字:使用系统调用创建一个套接字文件描述符。 绑定套接字:将套接字绑定到一个文件系统路径,类似于网络套接字绑定到IP地址和端口。...关闭套接字:完成通信后,关闭套接字并清理资源。 优点和应用场景 优点: 高效:由于不涉及网络协议栈的处理,Unix套接字具有更低的开销和更高的性能。
前文提到了Go语言版本的Unix套接字的实践,作为Java选手,自然也必须安排上。有了Go的经验,Java写起来也比较容易。 Java使用Unix套接字并不是JDK自带的,我们需要引入一个依赖。...package com.funtest.unix_socket; import org.newsclub.net.unix.AFUNIXServerSocket; import org.newsclub.net.unix.AFUNIXSocketAddress...; import java.io.*; import java.net.ServerSocket; import java.net.Socket; /** * Unix...package com.funtest.unix_socket; import org.newsclub.net.unix.AFUNIXSocket; import org.newsclub.net.unix.AFUNIXSocketAddress...; import java.io.*; import java.net.Socket; /** * Unix Socket 客户端 */ public class
Linux进程通信之Unix套接字(一) 什么是套接字 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。...) AF_INET6(IPV6) AF_UNIX(本地通讯协议,一般用于进程通信,不需要经过网卡) 套接字类型 流套接字(SOCK_STREAM),提供一个顺序化的、可靠的、全双工的、基于连接的字节流。...TCP 协议即基于这种流式套接字。 数据报套接字(SOCK_DGRAM)即提供数据报文的支持。(无连接,不可靠、固定最大长度).UDP协议即基于这种数据报文套接字。...PHP中封装了以socket开头和stream开头的两种函数,都可以实现Unix套接字通信,具体可以查看PHP官方手册 Unix套接字还分无命名的(用于父子、兄弟等有血缘关系进程通信)和命名的(任何进程都可以通信...) 无命名代码示例 无命名Unix套接字通信TCP协议和UDP协议都可以使用 <?
family 说明 AF_INET IPv4协议 AF_INET6 IPv6协议 AF_LOCAL Unix域协议 AF_ROUTE 路由套接字 AF_KEY 密匙套接字 socket函数的type常值...type 说明 SOCK_STREM 字节流套接字 SOCK_DGRAM 数据报套接字 SOCK_SEQPACKET 有序分组套接字 SOCK_RAW 原始套接字 socket函数的protocol...listen函数把一个未连接的套接字转换成一个被动套接字,指示内核应该接受向该套接字的连接请求。调用listen函数导致套接字从closed状态转换到listen状态。...const char *arg0,...); int execve(const char *pathname,char *const argv[],char *const envp[]); 七、并发服务器 unix...1,父进程继续等待下一个客户连接 子进程:fork函数之后,监听套接字和已连接套接字的引用技术都加1,pid==0,首先监听套接字listenfd的引用计数减1(不会关闭监听套接字),然后执行客户所需的操作
然后是网络编程的一些接口。最后写代码简单实践一下。...4.socket编程接口 socket的意思是套接字,即 socket 常见API // 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器) int socket(int domain...第二个参数:套接字的类型,即SOCK_STREAM(TCP)、SOCK_DGRAM(UDP)。...返回值:成功为0,失败-1 sockaddr结构: 网络通信的方式有很多种,比如基于网IP的网络通信,AF_INET,原始套接字,域间套接字等等。...,并捕获数据发送源的地址 第一个参数:套接字文件描述符 第二个参数:指明一个缓冲区,该缓冲区用来存放recvfrom函数接收到的数据 第三个参数:buf的长度 第四个参数:一般置
◆Socket 基础知识◆ 套接字(Sockct)随着 TCP/IP协议的使用,也越来越多地被使用在网络应用程序的构建中,实际上 Socket编程也已经成为了网络中传送和接收数据的首选方法,套接字最早是由伯克利在...Socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求,Socket起源于Unix而Unix/Linux基本哲学之一就是"...Pythhon 标准库中支持套接口的模块是Socket,其中包含生成套接字、等待连接、建立连接和传输数据的方法,任何应用程序需要使用套接字,都必须调用Socket方法生成一个套接字对象,对于服务器端而言...常用方法: 方法名称 方法说明 sk.socket() 创建一个套接字对象,并返回套接字相关内容:(socket.AF_INET,socket.SOCK_STREAM) sk.bind(address...(ipaddr,port) sk.getsockname() 返回套接字自己的地址,通常是一个元组(ipaddr,port) sk.fileno() 套接字的文件描述符 ◆实现TCP传输◆ 服务端:
一、套接字Socket IP地址标志Internet上的计算机,端口号标志正在计算机上运行的进程(程序)。...当两个程序需要通信时,可以通过Socket类建立套接字对象并连接在一起。...(端口号与IP地址的组合得出的一个网络套接字) 二、示例 (1)客户端服务器端一对一;聊天 1 package mychat; 2 3 import java.io.BufferedReader
但是我们回顾计算机网络的知识提出疑问,计算机信息传输有TCP和UDP两种连接方式,但是我们编程的时候怎么没体现?怎么回事呢?...Java也为我们考虑到了,Java的网络编程,也叫作Socket编程!...在了解网络编程之前,我们先了解一下什么叫套接字,套接字即指同一台主机内应用层和运输层之间的接口,由于这个套接字是建立在网络上建立网络应用的可编程接口,因此也将套接字称为应用程序和网络之间的应用程序编程接口...我们来设计一个应用来示范一下,流程: 客户机从键盘读取一行字符串,并通过套接字发送到服务器。 服务器从连接的套接字获取这行字符串,并对其进行修改(将小写转为大写),最后再发回客户端。...} } 有网络基本常识的朋友应该很好理解上面的代码(记录供以后参考),博主在代码中也作了很详细的注释,这里就不在多解释什么了,相信通过上面简单的例子,我们能够了解Java是如何实现TCP和UDP套接字编程
Linux网络编程套接字 零、前言 一、网络基础知识 1、源IP地址和目的IP地址 2、源MAC地址和目的MAC地址 3、认识端口号 4、PORT VS PID 5、TCP和UDP协议 6、网络字节序...二、socket编程接口 1、sockaddr结构 2、socket 常见API 零、前言 本章就Linux网络编程进行概念及接口学习,下一篇则是简单的进行上手网络套接字编程 一、网络基础知识 1...都会按照这个TCP/IP规定的网络字节序来发送/接收数据 如果当前发送主机是小端,,就需要先将数据转成大端;否则就忽略,直接发送即可 对于传输的数据计算机底层会自动帮我们做网络字节序的转化,但是在套接字编程时需要填入的一些数据字段是需要我们主动进行网络字节序的转化...1、sockaddr结构 套接字不仅支持跨网络的进程间通信,还支持本地的进程间通信(域间套接字) 因此套接字提供了sockaddr_in结构体和sockaddr_un结构体,其中sockaddr_in...结构体是用于跨网络通信的,而sockaddr_un结构体是用于本地通信的 为了让套接字的网络通信和本地通信能够使用同一套函数接口,于是就出现了sockeaddr结构体,该结构体与sockaddr_in和
领取专属 10元无门槛券
手把手带您无忧上云