网络IPC:套接字】的更多相关文章

通过网络套接字可以使得不同计算机上运行的进程相互通信. 1.创建套接字 #include <sys/socket.h> Int socket( int domain, int type, int protocol); 注意:AF_LOCAL域是AF_UNIX的别名,AF_UNSPEC域可以代表任何域. 2.套接字通信是双向的,禁止套接字上的输入/输出 #include < sys/socket.h> Int shutdown ( int sockfd, int how); 3.处理…
一.IP地址和端口 套接字接口可以用于计算机间通信.目前计算机间使用套接字通讯需要保证处于同一网段. 为了查看是否处于同一网段,我们可以使用IP地址判断. IP地址是计算机在网络中的唯一标识.IP地址本质是个整数,它与网卡的物理地址(MAC地址)绑定.MAC地址在网卡出厂时都确保唯一,不需要我们关心. IP地址有IPv4和IPv6之分,IPv4是32位整数,IPv6是128位整数.现在使用的一般是IPv4. 为了便于记忆,IPv4地址的每个字节转换为一个整数(8位整数,0到255),各个整数之间…
网络编程与套接字 网络编程 网络编程是什么: ​ 网络通常指的是计算机中的互联网,是由多台计算机通过网线或其他媒介相互链接组成的 ​ 编写基于网络的应用程序的过程序称之为网络编程. 网络编程最主要的工作就是在发送端把信息通过规定好的协议进行组包, 在接收端按规定好的协议把包进行解析,从而提取出相应的信息,达到通信的目的. 其中最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析, 其中涉及到代码,数据库,网页设计,服务器架设, c/s类与b/s类是目前主要的程序架构, c/s是Cl…
我们已经知道如何使用I/O与文件通信,还知道了如何让同一计算机上的两个进程进行通信,这篇文章将创建具有服务器和客户端功能的程序 互联网中大部分的底层网络代码都是用C语言写的. 网络程序通常有两部分组成:服务器和客户端. 工具介绍: telnet 为了测试功能,我们使用一个叫做telnet的客户端程序连接服务器,telnet 接受两个参数:一个是服务器地址,另一个是服务器运行的端口号, 如果在运行服务器的那台计算机上运行telnet,地址可填写127.0.0.1 这样使用:假设端口号是30000…
package socketpack_2; import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import java.…
#include <sys/socket.h> int setsockopt( int socket, int level, int option_name,const void *option_value, size_t option_len); 第一个参数socket是套接字描述符. 第二个参数level是被设置的选项的级别,如果想要在套接字级别上设置选项,就必须把level设置为SOL_SOCKET. 第三个参数 option_name指定准备设置的选项,option_name可以有哪些…
/* 设置套接字选项周期性消息检测连通性 心跳包. 心博.主要用于长连接. * 参数:套接字, 1或0开启, 首次间隔时间, 两次间隔时间, 断开次数 */ void setKeepAlive( int iSockfd , int iSockAttrOn, socklen_t iIdleTime , socklen_t iInterval , socklen_t iCount ){ setsockopt( iSockfd , SOL_SOCKET , SO_KEEPALIVE , (const…
1.端口:IANA(Internet Assigned Numbers Authority)维护着一个端口号分配状况的清单. 众所周知的端口(0-1023):由IANA分配和控制,可能的话,相同的端口号尽可能分配给TCP,UDP和STCP的同一给定服务 已登记的端口(1024-49151):这些端口不受IANA控制, 动态.私用的端口(49152-65535):临时端口. 2.套接字:一个套接字对是一个定义该连接的两个端点的四元组.{本地IP,本地TCP端口号,外地IP,外地TCP端口号} 套接…
一.套接字Socket IP地址标志Internet上的计算机,端口号标志正在计算机上运行的进程(程序). 端口号被规定为一个16位的0--65535之间的整数,其中,0--1023被预先定义的服务通信占用. 当两个程序需要通信时,可以通过Socket类建立套接字对象并连接在一起.(端口号与IP地址的组合得出的一个网络套接字) 二.示例 (1)客户端服务器端一对一:聊天 package mychat; import java.io.BufferedReader; import java.io.B…
http://www.educity.cn/linux/1241288.html 有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项. int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen)…
1.一般来说,一个端口释放后会等待两分钟之后才能再被使用,SO_REUSEADDR是让端口释放后立即就可以被再次使用. SO_REUSEADDR用于对TCP套接字处于TIME_WAIT状态下的socket,才可以重复绑定使用.server程序总是应该在调用bind()之前设置SO_REUSEADDR套接字选项.TCP,先调用close()的一方会进入TIME_WAIT状态 2.SO_REUSEADDR和SO_REUSEPORT SO_REUSEADDR提供如下四个功能: 当有一个有相同本地地址和…
有时候我们需要控制套接字的行为(如修改缓冲区的大小),这个时候我们就要学习套接字选项. int getsockopt(int sockfd,int level,int optname,void *optval,socklen_t *optlen) int setsockopt(int sockfd,int level,int optname,const void *optval,socklen_t *optlen) level指定控制套接字的层次.可以取三种值: SOL_SOCKET:通用套接字…
setsockopt的一些用法: close socket(一般不会立即关闭而经历TIME_WAIT的过程)后想继续重用该socket: BOOL bReuseaddr=TRUE; setsockopt(s,SOL_SOCKET ,SO_REUSEADDR,(const char*)&bReuseaddr,sizeof(BOOL)); 如果要已经处于连接状态的soket在调用close socket后强制关闭,不经历TIME_WAIT的过程: BOOL bDontLinger = FALSE;…
1. 学习总结(目前只看了前6章):http://note.youdao.com/noteshare?id=2a0c29f5feeddd8f6f390427f0d67114 2. 课后习题 第一章 http://note.youdao.com/noteshare?id=6d2b0df90d41fba8850920f89f40a45b 第二章 http://note.youdao.com/noteshare?id=71f80bfa6e6e0b239f98d90290dff8cf 第三章 http:…
1. 网络IPC 套接字接口既可以用于计算机之间进程通信,也可以用于计算机内部进程通信   套接字描述符在Unix系统中是用文件描述符实现的   /* 创建一个套接字 */ #include <sys/socket.h> int socket(int domain, int type, int protocol); protocol通常是0,表示按给定的域或套接字类型选择默认协议 在AF_INET中,SOCK_STREAM的默认协议是 TCP 在AF_INET中,SOCK_DGRAM的默认协议…
套接字产生的原因: 当应用进程通过传输层进行通信时 ,TCP和 UDP将面临同时为多个应用进程提供并行通信的问题.多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据. 为了区别每个应用进程和连接,许多计算机的操作系统为应用进程和TCP/IP协议簇提供了称为套接字的接口. 应用进程通过套接字接入到网络: 套接字的定义: 套接字是同一台主机应用进程和传输层的接口.因为它是建立在网络应用程序之上的可编程接口,所以它也被称为API﹙应用程序接口﹚,Socket可以看成在两个程序进行…
. . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APUE) 之 进程控制 (七) 一起学 Unix 环境高级编程 (APUE)…
16.1.引言 上一章考查了各种Unix系统所提供的经典进程间通信(IPC)机制:管道.先进先出.消息队列.信号量以及共享内存.通过这些机制,同一台计算机上运行的进程可以相互通信.本章将考查不同计算机(通过网络连接)上运行的进程相互通信的机制:网络进程间通信(network IPC). 16.2.套接字描述 套接字时通端点的抽象.与应用程序要使用文件描述符访问文件一样,访问套接字也需要用套接字描述符. 要创建一个套接字,可以调用socket函数. #include <sys/socket.h>…
UNIX网络编程——网络IPC:套接字 Contents 套接字接口 套接字描述符 寻址 字节序 地址格式 地址查询 绑定地址 建立连接 数据传输 套接字选项 带外数据 UNIX域套接字 使用套接字的示例 面向连接的ruptime 无连接的ruptime…
网络进程间通信(network IPC):不同计算机(通过网络相连)上运行的进程相互通信的机制. 套接字网络IPC接口:进程能够使用该接口和其他进程通信.通过该接口,其他进程运行位置是透明的,它们可以在同一台计算机上也可以在不同的计算机上.实际上这正是套接字接口的目标之一:同样的接口既可以用于计算机间通信又可以用于计算机内通信.   本篇博文内容摘自<UNIX环境高级编程>(第2版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/.…
一起学 Unix 环境高级编程 (APUE) 之 网络 IPC:套接字 . . . . . 目录 (一) 一起学 Unix 环境高级编程 (APUE) 之 标准IO (二) 一起学 Unix 环境高级编程 (APUE) 之 文件 IO (三) 一起学 Unix 环境高级编程 (APUE) 之 文件和目录 (四) 一起学 Unix 环境高级编程 (APUE) 之 系统数据文件和信息 (五) 一起学 Unix 环境高级编程 (APUE) 之 进程环境 (六) 一起学 Unix 环境高级编程 (APU…
上一章(15章)中介绍了UNIX系统所提供的多种经典进程间通信机制(IPC):管道PIPE.命名管道FIFO.消息队列Message Queue.信号量Semaphore.共享内存Shared Memory,另外还有第10章介绍的信号Signal.这六种IPC各有差异,但是都存在一个共同的限制:它们仅能用于同一台计算机上的进程间通信,不能用于不同计算机间的进程间通信.本章将说明一种既可以用于计算机内进程通信,又可以用于计算机间进程通信的UNIX服务,即:网络IPC:套接字. 套接字描述符 对于套…
网络IPC:套接字接口概述 套接字接口实现了通过网络连接的不同计算机之间的进程相互通信的机制. 套接字描述符(创建套接字) 套接字是通信端点的抽象,为创建套接字,调用socket函数 #include<sys/socket.h> int socket(int domain,int type,int protocol); /*返回:成功,返回套接字描述符,失败,-1*/ 参数domain:确定通信特性,包括地址格式.如AF_INET IPV4 因特网域 参数type:确定套接字类型,进一步确定套…
既然将套接字端点表示为文件描述符,那么只要建立连接,就可以使用read和write来通过套接字通信.通过在connect函数里设置对方地址,数据报套接字也可以“连接”.在套接字描述符上采用read和write是非常有意义的,因为可以传递套接字描述符到那些原先设计为处理本地文件的函数.而且可以安排传递套接字描述符到执行程序的子进程,该子进程并不了解套接字. 尽管可以通过read和write交换数据,但这就是这两个函数所能做的一切.如果想指定选项.从多个客户端接收数据包或者发送带外数据,需要采用6个…
如果处理的是面向连接的网络服务(SOCK_STREAM或SOCK_SEQPACKET),在开始交换数据以前,需要在请求服务的进程套接字(客户端)和提供服务的进程套接字(服务器)之间建立一个连接.客户端可以用connect建立一个连接. #include <sys/socket.h> int connect(int sockfd, const struct sockaddr *addr, socklen_t len); 返回值:若成功则返回0,出错则返回- 在connect中所指定的地址是想与之…
在学习用套接字做一些有意义的事情之前,需要知道如何确定一个目标通信进程. 进程的标识有两个部分:计算机的网络地址可以帮助标识网络上想与之通信的计算机,而服务可以帮助标识计算机上特定的进程. 1.字节序 运行在同一台计算机上的进程相互通信时,一般不用考虑字节的顺序(字节序),字节序是一个处理器架构特性,用于指示像整数这样的大数据类型的内部字节顺序.图16-1显示一个32位整数内部的字节是如何排序的. 图16-1 32位整数内部的字节序 如果处理器架构支持大端(big-endian)字节序,那么最大…
套接字是通信端点的抽象.与应用程序要使用文件描述符访问文件一样,访问套接字也需要套接字描述符.套接字描述符在UNIX系统是用文件描述符实现的.事实上,许多处理文件描述符的函数(如read和write)都可以处理套接字描述符. 要创建一个套接字,可以调用socket函数. #include <sys/socket.h> int socket(int domain, int type, int protocol); 返回值:若成功则返回文件(套接字)描述符,若出错则返回- 参数domain(域)确…
1 套接字是通信端点的抽象 创建套接字: int socket(int domain,int type,int protocol) domain:通信域 AF_INET.AF_INET6.AF_LOCAL.AF_UNSPEC type:套接字类型,SOCK_DGRAM.SOCK_STREAM.SOCK_SEQPACKET.SOCK_RAW protocol:通常为0,表示domain和type默认的协议 linux中套接字使用文件描述符实现的,文件描述符上使用的大多数函数可以用于套接字 套接字输…
socket描述符 套接字是通信端点的抽象,创建一个套接字使用如下函数: #include <sys/socket.h> int socket(int domain, int type, int protocol); 返回值:若成功,返回套接字描述符:若出错,返回-1 说明: domain: 指定通信的特征,包括地址格式,以AF_开头的常数表示地址族(address family): 域 说明 AF_INET IPv4因特网域 AF_INET6 IPv6因特网域 AF_UNIX UNIX域 A…