Linux&Apue(0.1.1):Client指定IP地址和端口&Server监听所有IP地址和指定端口

工具: netstat查看服务及监听端口详解 在Linux使用过程中,需要了解当前系统开放了哪些端口,并且要查看开放这些端口的具体进程和用户,可以通过netstat命令进行简单查询。 阅读详情

(一)Client如何指定IP地址和端口

意义:在(0.1.0)文中,我们进行了一个Client的编程。我们知道连接服务器需要IP地址以及端口,如果我们需要连接别的服务器呢?这样IP地址和端口也需要进行相应更改。每次进行VIM编辑再编译是一件十分麻烦的事情,那么我们想在运行文件的时候就像LINUX系统下命令选项的操作进行IP地址和端口的指定。

(1)涉及函数:

1.1 getopt_long()函数

getopt_long()函数:长选项的命令行解析。
目的:就是可以指定任意IP,PORT,避免经常在文件中修改。

#include <getopt.h>		//头文件包含
int getopt_long(int argc, char * const argv[],const char *optstring, const struct option *longopts,int *longindex);

参数:
argc和argv[]:用来接收main函数的参数。
optstring:一个字符串,表示可以接受的参数。例如,“a:b:cd”,表示可以接受的参数是a,b,c,d,其中,a和b参数后面跟有更多的参数值。(例如:-a host -b name)。
longopts:一个结构的实例。
longindex:表示当前长参数在longopts中的索引值。
示例:

getopt_long(argc,argv,"p:h",opts,NULL)

1.1.1 option结构体

struct option {
	const char *name; 
	int has_arg;
	int *flag;
	int val;
}

`参数:
name:表示的是长参数名
has_arg(3个值):
①no_argument(或者是0),表示该参数后面不跟参数值
②required_argument(或者是1),表示该参数后面一定要跟个参数值
③optional_argument(或者是2),表示该参数后面可以跟,也可以不跟参数值
flag:用来决定,getopt_long()的返回值到底是什么。如果flag是null(通常情况),则函数会返回与该项option匹配的val值;如果flag不是NULL,则将val值赋予flag所指向的内存,并且返回值设置为0。
val:与flag联合决定返回值
示例:

struct option	opts[]={
		{"port",required_argument,NULL,'p'},
		{"help",no_argument,NULL,'h'},
		{0,0,0,0}
	};

(2) Client指定IP地址和端口

因为,在Linux&Apue(0.1.0)中进行过CS的编程,这里只进行补充。

2.1 打印命令的信息让操作者了解

这里有点像Linux下的man和help。

void print_usage(char *progname)
{
	printf("%s usage: \n", progname);
	printf("-i(--ipaddr): sepcify server IP address\n");
	printf("-p(--port): sepcify server port.\n");
	printf("-h(--Help): print this help information.\n");
	return ;
}

接着,在主函数中,我们需要用一个while和getopt_long函数去实现命令的获取与解析。

2.2 定义getopt_long函数需要的结构体

struct option        opts[] = {
		{"ipaddr", required_argument, NULL, 'i'},
		{"port", required_argument, NULL, 'p'},
		{"help", no_argument, NULL, 'h'},
		{NULL, 0, NULL, 0}
	};

2.3 while和getop_long实命令的获取与解析

while( (ch=getopt_long(argc, argv, "i:p:h", opts, NULL)) != -1 ) 
	{
		switch(ch)
		{
			case 'i':
				servip=optarg;
				break;

			case 'p':
				port=atoi(optarg);
				break;

			case 'h':
				print_usage(argv[0]);
				return 0;
		}

	}

2.4 最后为了确保IP和端口的输入

if( !servip || !port )
	{
		print_usage(argv[0]);
		return 0;
	}

(二) Server如何听所有IP地址和指定端口

意义:同样在(0.1.0)我们编写Server服务器的时候,我们在文本中写入了IP地址和port的。但是,在实际过程中,服务器监听的端口不一定不变化的,也不可能只监听一个客户端的IP地址。所以,我们需要服务器可以随时指定端口以及监听所有IP地址。

(1)Server监听所有IP地址和指定端口

1.1 打印命令的信息让操作者了解

void print_usage(char *progname)
{
	printf("%s usage: \n", progname);
	printf("-p(--port): sepcify server listen port.\n");
	printf("-h(--Help): print this help information.\n");

	return ;
}

1.2 定义getopt_long函数需要的结构体

struct option        opts[] = {
		{"port", required_argument, NULL, 'p'},
		{"help", no_argument, NULL, 'h'},
		{NULL, 0, NULL, 0}
	};

1.3 while和getop_long实命令的获取与解析

while( (ch=getopt_long(argc, argv, "p:h", opts, NULL)) != -1 ) 
	{
		switch(ch)
		{
			case 'p':
				port=atoi(optarg);
				break;

			case 'h':
				print_usage(argv[0]);
				return 0;
		}
	}

1.4 Server监听所有IP地址

在(0.1.0)文中,我们知道只需要在bind()函数中的servaddr族中进行修改即可。

servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
龙虾机器人(OpenClaw)本地部署完全技术指南 在开始部署之前,我们需要明确部署的对象。通常所说的“龙虾机器人”指的是开源项目 OpenClaw(曾用名:Clawdbot、Moltbot)。它由程序员彼得·斯坦伯格开发,是一个开源的、可本地部署的通用型AI代理系统。与ChatGPT等对话式AI不同,OpenClaw被赋予了操作系统的权限:它可以执行终端命令、读写文件、操控浏览器、安装软件,甚至通过MCP协议调用外部工具。 阅读详情

相关推荐

MST-GAT: Enhancing Anomaly Detection in Multimodal Time Series with Intra- and Inter-Modal Attention

本文深入解析了MST-GAT模型,这是一种通过模态内与模态间注意力机制增强多模态时间序列异常检测的新方法。它通过构建图结构显式建模传感器间的复杂时空依赖,并结合时间卷积网络与联合优化策略,有效降低了传统方法中常见的误报与漏报问题,在工业监控等场景中展现出卓越性能。

weixin_29079671的博客 150

C网络编程服务端监听客户端IP与端口

使用C语言编写服务器监听客户端信息demo 适用于WINDOWS平台 运行效果 编写主函数与头文件 main.c #include&amp;lt;stdio.h&amp;gt; #include&amp;lt;stdlib.h&amp;gt; #include&amp;lt;string.h&amp;gt; #include&quot;socket_io/tcp_listener.h&quot;

章鱼仔的博客 7751

实战指南:如何用Elasticsearch+Milvus搭建十亿级多模态搜索系统(含性能调优)

本文详细介绍了如何利用Elasticsearch和Milvus构建十亿级多模态搜索系统,包括架构设计、性能调优和实战部署。通过混合架构实现高效文本检索与向量相似度计算,显著提升查询性能与扩展能力,适用于大规模多模态数据处理场景。

x8y9z0的博客 1171

linux socket中tcp传输client端指定本地端口

固定客户端端口

汽车电子软件领域知识分享 4075

PCIe5.0均衡简介(整理版)

pcie5.0 均衡 equalization

m0_53559277的博客 9108

Fiddler抓包实战:5分钟搞定微信公众号历史消息接口分析(附完整Python代码)

本文详细介绍了如何使用Fiddler抓包工具逆向分析微信公众号历史消息接口,并提供完整的Python代码实现。从环境准备、动态参数捕获到商业级采集系统架构设计,全面解析了突破官方接口限制的技术方案,帮助开发者高效获取公众号文章数据。

tree8的博客 329

如何获取Client和Server自己的还有对方的IP/port

今天同了个问题, 说如何得到Client自己的source IP和Port。  之前都是server端去读取client的IP和Port。搞了个小程序试试,果然是可以拿到的。话不多说上code。 Note:build optiong++ $filename -std=c++11 -lpthread #include #include // for memset(),

Max_Cong的博客 6558

opencv简单小项目

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,它提供了大量的图像和视频处理功能。要开始一个OpenCV项目,你需要安装OpenCV库,这通常可以通过Python的pip包管理器完成。替换为你要加载的图像的实际路径。这个例子展示了OpenCV项目的基本结构,你可以在此基础上添加更多的图像处理功能。如果你需要更详细的指导或代码示例,请告诉我你的具体需求。

youyouxiong的博客 972

什么是通配监听端口? 什么是通配监听IP?

TCP/IP协议下每个端口只能由一个服务独占监听,一个服务或应用会指定监听特定的一个或多个端口来接收客户端的连接请求。则是指服务器配置为接收来自哪些网络接口(即哪些IP地址)上连接请求的行为。指的是服务器或服务开启的特定TCP或UDP端口号,等待客户端连接或发送数据。在计算机网络和TCP/IP协议中,并没有“通配监听端口”这一标准概念。,这意味着服务器将监听所有可用网络接口上的连接请求。什么是通配监听端口?什么是通配监听IP?”时,如在IPv4中的。

张紫娃的博客 2684

[网络安全自学篇] 六.OllyDbg动态分析工具基础用法及Crakeme逆向破解

这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步。上一篇文章分享了IDA Pro反汇编工具的基础用法,并简单讲解一个EXE逆向工程解密实战方法;本篇文章将讲解动态分析OllyDbg工具的基础用法,主要是结合两个Crakeme案例逆向破解。希望对初学者有帮助,大神请飘过,谢谢各位看官!

杨秀璋的专栏 1万+

价值微笑曲线与AI公司的位置

1. 背景介绍 1.1 问题由来 自20世纪60年代,哈佛大学商学院教授西奥多·波特提出了“价值链”理论以来,企业如何构建竞争优势成为企业经营管理领域的研究重点。随着全球化的发展和科技进步,企业竞争环境发生了深刻变化,传统价值链管理模式逐渐显现出局限性。近年来,全球竞争格局由成本竞争转向创新竞争,企业的生存

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 1095

端口及端口监听

我们可以把端口理解为 程序对外开放的接口。 通过某一端口来提供某一项服务。ip上有某一个接口,说明该程序在运行,没有就说明该程序没在运行。 在图中我们可以看到在Local address 这一列,有的在监听0.0.0.0:端口,有的在监听127.0.0.1:端口,还有的在监听 独立IP : 端口,那么他们都代表什么呢?又有什么区别呢? 0.0.0.0 代表了监听这台服务器上所有的IP的某个端口,外面的人可以访问所有本机的IP监听的端口 127.0.0.1 代表了只允许本机访问 监听的端口 192.168.

weixin_44717560的博客 1万+

Pytorch实现EdgeCNN(基于PyTorch实现)

本专栏整理了《图神经网络代码实战》,内包含了不同图神经网络的相关代码实现(PyG以及自实现),理论与实践相结合,如GCN、GAT、GraphSAGE等经典图网络,每一个代码实例都附带有完整的代码。

优快云 精品推荐 1万+

Linux中查看正在监听的IP和端口

最近和其他终端设备联调时,需要去查看正在监听的IP和端口,以下在 Linux 系统中,可以使用以下命令查看正在监听的端口和 IP 地址。这个取决于当前Linux系统内已有的工具,如果不清楚,可以都试一下。

qq_52660422的博客 1777

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Socket Server指定监听端口和IP

Socket Server指定监听端口和IP   TCP/IP进行网络编程时,会用到socket相关函数,各个函数的详细介绍在这里: https://www.cnblogs.com/liedElxa/p/10795398.html 需求描述   考虑到一种场景,在一个多网卡的服务器上,比如有10.0.0.1、10.0.0.2、10.0.0.3三个网卡都在使用,我们想做一个监听8080号端口的服务器...

AlwaySimple的博客 1万+

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

PostgreSQL学习第五篇--监听地址及端口修改

在数据目录下编辑postgresql.conf文件,找到如下内容: #listen_addresses = 'localhost' # what IP address(es) to listen on; # comma-separated list of addresses;

在路上 2万+

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

linux中ISCSI网络存储服务端监听 IP 地址和端口号修改方法

RHCE习题中ISCSI网络存储服务端监听 IP 地址和端口号修改方法 ISCSI服务端配置中,如果误操作多配置了监听IP地址和端口号,可以使用如下方法删除。 EXAMPLE:我们需要配置的监听IP地址为172.25.0.11,但是由于误操作,多配置了172.25.0.10为监听IP;必须删除172.25.0.10的监听地址,操作如下: delete 172.25.0.10 ip_port=326...

MappleZF的博客 2619

监听总结之证明 IP地址各自拥有自己的端口号空间

IP地址各自拥有自己的端口号空间,比如同一个主机上有三个ip地址,其中127.0.0.1、192.168.0.10和192.168.0.100,而192.168.0.100是附加绑定在192.168.0.10所在的网卡上,也即192.168.0.100和192.168.0.10在同一个网卡上。接着,配置监听如下: LISTENER =  (DESCRIPTION_LIST =

haiross的专栏 2422

mysql 指定多个IP 绑定监听地址 bind_address

bind_address 参数:其实能否绑定多个IP跟mysql 版本有关系。MySQL 服务器在一个或多个网络套接字上侦听 TCP/IP 连接。,但一个地址可以映射到多个网络接口。要指定服务器应如何侦听 TCP/IP 连接,请 bind_address在服务器启动时设置系统变量。服务器还有一个 admin_address系统变量,可以在专用接口上启用管理连接。

Shallow的博客 1万+

23.3.2 端口设置与IP地址绑定

23.3.2  端口设置与IP地址绑定在Helix服务器管理界面的Server Setup主菜单中,包含了最基本的服务器设置项目。下面首先介绍一下有关端口和IP地址绑定的设置。选择Server Setup|Ports菜单后,浏览器窗口的右边将出现图23-10所示的界面。在图23-10的端口设置界面中,RTSP端口是客户端与服务器使用RTSP协议时使用的端口号,RealPlayer、Quic

Linux/UNIX典藏大系 1261

绑定端口和IP,Listen 与VirtualHost指令

Apache启动时,会绑定本机上的地址和端口,然后等待请求的进入。默认情况下,它会监听本机的所有地址。但是,当需要监听特定的地址或端口或地址与端口的组合,或者需要对不同的IP地址、主机名、端口作出不同的响应(如使用虚拟主机)时,就必须明确指定。 Listen指令告诉服务器接只受来自特定端口(或地址+端口的组合)的请求。如果Listen指令仅指定了端口,则服务器会监听所有的IP地址;如果指定了...

李义星 1181

Linux端口开放和监听

简介:由于不了解端口工作的方式,导致在想要实践telnet ip 80时一直被报telnet: Unable to connect to remote host: Connection refused,在解决问题的过程中又一直在防火墙放行处原地转圈圈导致自己浪费了很长时间,遂梳理一份自己解决问题的可行方案,并总结一下此过程学到的关于端口和服务的琐碎知识点。

Dunzier的博客 1万+

服务器监控1-Serveragent

Serveragent监控服务器 1.上传serveragent-x.x.x.zip到被测服务器 rz 选择要上传的文件。注意:使用rz需要连接远程服务器的客户端支持,例如XShell 安装rz:yum install -y lrzsz 2.解压:unzip serveragent-x.x.3.zip 安装unzip:yum install unzip -y后重新解压 3.进入解压后的文件,执行./Serveragent.sh,可以查看运行信息 :UDP 4444 TCP 4444 4.在jme

apple***的博客 1601

java监听某端口和ip_Java 通过Socket监听指定服务器(IP)的指定端口,及向指定服务器的指定端口发送信息...

客户端:向指定端口发送信息package com.jszc.lottery.modules.longpay.util;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;i...

weixin_42171132的博客 3332

cmd中检测远程的ip和端口是否处于监听状态

第一步:使用ping命令测试远程的ip是否可连通在cmd中输入ping ip地址: 如果最后的统计信息中丢失率为0表示可以连通该ip地址。那么就可以进行下一步的测试该ip下的某一个端口是否开放的操作了。第二步:使用telnet测试远程某一个ip的端口是否开放为了安全起见,windows默认是不开启telnet客户端的,要通过控制面板—》程序–》启动或关闭windows功能—》telnet客户端—》

ZhangYaohui专栏 10万+
上一篇: Linux&Apue(0.2.1):多进程并发服务器的编程
下一篇: Linux&Apue(0.2.2):了解守护进程&系统日志
NeWorld20
博客等级 码龄7年 58粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值