问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux socket 如何发现主机是否活着

发布网友 发布时间:2022-04-20 17:19

我来回答

3个回答

热心网友 时间:2023-07-19 11:39

使用基本socket函数来检测。
Linux系统是通过提供套接字(socket)来进行网络编程的。网络的socket数据传输是一种特殊的I/O,socket也是一种文件描述符。socket也有一个类似于打
开文件的函数:socket(),调用socket(),该函数返回一个整型的socket的描述符,随后的连接建立、数据传输等操作也都是通过该socket实现。
1、socket函数
syntax:
int socket(int domain, int type, int protocol);
功能说明:
调用成功,返回socket文件描述符;失败,返回-1,并设置errno
参数说明:
  domain指明所使用的协议族,通常为PF_INET,表示TCP/IP协议;
  type参数指定socket的类型,基本上有三种:数据流套接字、数据报套接字、原始套接字
  protocol通常赋值"0"。
  两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地址、本地主机端口、远端主机地址和远端协议端口。socket数据结构中包含这五种信息。
2、bind函数
syntax:
int bind(int sock_fd,struct sockaddr_in *my_addr, int addrlen);
功能说明:
将套接字和指定的端口相连。成功返回0,否则,返回-1,并置errno.
参数说明:
sock_fd是调用socket函数返回值,
  my_addr是一个指向包含有本机IP地址及端口号等信息的sockaddr类型的指针;
  struct sockaddr_in结构类型是用来保存socket信息的:
  struct sockaddr_in {
  short int sin_family;
  unsigned short int sin_port;
  struct in_addr sin_addr;
  unsigned char sin_zero[8];
  };
addrlen为sockaddr的长度。
3、connect函数
syntax:
int connect(int sock_fd, struct sockaddr *serv_addr,int addrlen);
功能说明:
客户端发送服务请求。成功返回0,否则返回-1,并置errno。
参数说明:
sock_fd 是socket函数返回的socket描述符;serv_addr是包含远端主机IP地址和端口号的指针;addrlen是结构sockaddr_in的长度。
4、listen函数
syntax:
int listen(int sock_fd, int backlog);
功能说明:
等待指定的端口的出现客户端连接。调用成功返回0,否则,返回-1,并置errno.
参数说明:
sock_fd 是socket()函数返回值;
backlog指定在请求队列中允许的最大请求数
5、accecpt函数
syntax:
int accept(int sock_fd, struct sockadd_in* addr, int addrlen);
功能说明:
用于接受客户端的服务请求,成功返回新的套接字描述符,失败返回-1,并置errno。
参数说明:
sock_fd是被监听的socket描述符,
addr通常是一个指向sockaddr_in变量的指针,
addrlen是结构sockaddr_in的长度。
6、write函数
syntax:
ssize_t write(int fd,const void *buf,size_t nbytes)
功能说明:
write函数将buf中的nbytes字节内容写入文件描述符fd.成功时返回写的字节数.失败时返回-1. 并设置errno变量.
在网络程序中,当我们向套接字文件描述符写时有俩种可能:
1)write的返回值大于0,表示写了部分或者是全部的数据.
2)返回的值小于0,此时出现了错误.需要根据错误类型来处理.
如果错误为EINTR表示在写的时候出现了中断错误.
如果错误为EPIPE表示网络连接出现了问题.
7、read函数
syntax:
ssize_t read(int fd,void *buf,size_t nbyte)
函数说明:
read函数是负责从fd中读取内容.当读成功时,read返回实际所读的字节数,如果返回的值是0 表示已经读到文件的结束了,小于0表示出现了错误.
如果错误为EINTR说明读是由中断引起的,
如果错误是ECONNREST表示网络连接出了问题.
8、close函数
syntax:
int close(sock_fd);
说明:
当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:
函数运行成功返回0,否则返回-1

热心网友 时间:2023-07-19 11:39

你可以用扫描端口的方式,做个循环
socket
connect
成功了 这个主机就活着 , 不过也有可能他们没开启那个服务, 你也可以伪造一个arp报文广播一下,看看有没有对应ip地址的回应,有就活着 , 一般这个没人关 , 这个是用原始套接字, 你需要了解一下局域网的arp协议 也不是太难

热心网友 时间:2023-07-19 11:40

挨个telnet +端口 如果能进去说明活着,否则就死了
如何看懂《Linux多线程服务端编程

另外,公式里的 C 不一定是 CPU 总数,可以是“分配给这项任务的 CPU 数目”,比如在 8 核机器上分出 4 个核来做一项任务,那么 C=4。四:进程间通信只用TCPLinux下进程间通信的方式有:匿名管道(pipe)、具名管道(FIFO)、POSIX消息队列、共享内存、信号(signals),以及Socket。同步原语有互斥器(mutex)、条件变量(...

ASP.NET 在线程里面做了一个TCP发送数据,三秒钟发一次,当我不想发送...

第二种方法简单可靠,只需对TCP连接两个Socket设定KeepAlive探测,所以本文只讲第二种方法在Linux,Window2000下的实现(在其它的平台上没有作进一步的测试)1)Windows平台 C代码 //定义结构及宏 struct TCP_KEEPALIVE { u_longonoff;u_longkeepalivetime;u_longkeepaliveinterval;} ;define SIO_KEEPALIVE...

虚拟机linux修改主机名 shell socket centos7修改主机名 centos修改主机名 查看linux主机名 linux主机名修改 linux修改主机名命令 linuxtcp linux tcp编程
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
苏州一级建造师能买吗? 我是苏州2013一级建造师考生,9月15日最后一门考试把身份证忘在课桌上... 二级建造师 报名 现场确认些什么 会不会问你工作内容什么的,试探你是否... 根据我国《刑法》的规定,下列属于公共财产的是()。 苏州一级建造师报名时间是不是已经过了,要是没有赶上,今年还能有什么其 ... 盗取国家公共财产罪 我是苏州2013一级建造师考生,9月15日最后一场把身份证忘在考场了,我... 二级建造师网上报名已经通过'请问现场初审能找人代替吗我在苏州报名的... 什么是刑法中规定的公共财产,公民私人所有的财产 犯罪构成要件公私财物是什么? linux下socket编程中close()函数?? linux c编写udp程序的bind报错 怎样查询linux系统调用函数 linux BIND 服务以及用户权限问题. 用c语言实现Linux中的pushd+n功能 西瓜苗一般长多长 Linux下的c语言UDP编程 西瓜原苗和嫁接苗的区别 西瓜苗的嫩头往上翘怎么回事 如何实现在Linux下创建服务程序 西瓜幼苗刚出芽要不要浇水,要怎么管理 linux C语言编程,socket实现的即使通讯系统 西瓜苗期病害图片大全叶子发黄是怎么回事 socket编程中为什么client端的可以不用bind函数绑... 请问西瓜苗咋回事?(如图) linux socket 怎么处理大量的数据 西瓜苗长这样这是什么原因 基于Linux的远程指令系统(使用udp而不是tcp) 想要让西瓜苗长得又快又好,都有哪些小技巧呢? linux下socket编程中 bind(sockfd,(struct sockadd... 周的意思是什么? “周”字到底如何写? “周”汉语拼音怎么写? 肖邦的练习曲相对较简单的是哪首? 肖邦钢琴曲最简单 肖邦练习曲集的作品简介 肖邦名曲及名曲简介 请提供肖邦练习曲的详细资料。 我要肖邦练习曲的资料 肖邦哪首练习曲及奏鸣曲最简单?急 肖邦一生所创作的27首练习曲中技术难度最高的是哪... 刚开始练肖邦练习曲,准备艺考用的。哪一首比较简... 肖邦有几首练习曲 肖邦 离别练习曲赏析及演奏要点 浅析肖邦练习曲No.7演奏技巧 我要肖邦练习曲Op.10No.4的详细介绍 肖邦所有练习曲里面最简单、最短的一首。要能上的... 请简略介绍下肖邦离别练习曲 肖邦的练习曲对应的名字是什么 急求肖邦练习曲八的详细资料