Linux--socket编程--服务端代码
查看struct sockaddr_in包含的东西:
在/user/include下搜索:grep "struct sockaddr_in { " * -nir
r : 递归
i : 不区分大小写
n : 显示行号
socket编程–服务端代码
/*
1、调用 socket 创建套接字
2、调用 bind 添加地址
3、listen 监听
4、accept 连接
5、read
6、write
*/#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
//#include <linux/in.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>int main()
{int s_fd;//1、创建套接字 sockets_fd = socket(AF_INET,SOCK_STREAM,0);//用到IPV4,TCP协议,0自动配合起来if(s_fd == -1){ //返回-1,错误perror("socket");exit(-1);}//2、添加地址 bind struct sockaddr_in s_addr; //定义结构体s_addr.sin_family = AF_INET; //协议族s_addr.sin_port = htons(8989); //端口号,一般为5000--9000//电脑为x86是小端字节序,网络字节序为大端字节序。所以要进行转换用htonsinet_aton("172.0.0.1",&s_addr.sin_addr);//把字符串形式的127.0.0.1转换成网络能识别的格式。用到inet_atonbind(s_fd,(struct sockaddr *)&s_addr,sizeof(struct socket_in));//3、监听listenlisten(s_fd,10);//监听10个//4、连接 acceptint c_fd = accept(s_fd,NULL,NULL);//连接到客户端之后,后续的操作用返回值c_fd来操作//5、read//6、writeprintf("connect\n");//数据连接之后打印while(1);return 0;
}
编译运行此代码;
windos+R 输入cmd指令,然后ping + ip是否接通;通过之后,输入telnet + ip + 端口号。则该服务器连接客户端成功代码向下运行,打印出connect字符。
windos10系统默认不开启telnet,需要查询开启方法进行开启,再使用该命令。
数据互通:
/*
1、调用 socket 创建套接字
2、调用 bind 添加地址
3、listen 监听
4、accept 连接
5、read
6、write
*/#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
//#include <linux/in.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdlib.h>
#include <string.h>int main()
{int s_fd;int n_read;char redBuf[128];char *retmessage = "I get your message!\n";struct sockaddr_in s_addr; //定义结构体struct sockaddr_in c_addr;//数据清空memset(&s_addr,0,sizeof(struct sockaddr_in));memset(&c_addr,0,sizeof(struct sockaddr_in));//1、创建套接字 sockets_fd = socket(AF_INET,SOCK_STREAM,0);//用到IPV4,TCP协议,0自动配合起来if(s_fd == -1){ //返回-1,错误perror("socket");exit(-1);}//2、添加地址 bind s_addr.sin_family = AF_INET; //协议族s_addr.sin_port = htons(8989); //端口号,一般为5000--9000//电脑为x86是小端字节序,网络字节序为大端字节序。所以要进行转换用htonsinet_aton("172.0.0.1",&s_addr.sin_addr);//把字符串形式的127.0.0.1转换成网络能识别的格式。用到inet_atonbind(s_fd,(struct sockaddr *)&s_addr,sizeof(struct socket_in));//3、监听listenlisten(s_fd,10);//监听10个//4、连接 acceptint clen = sizeof(struct socket_in);int c_fd = accept(s_fd,(struct sockaddr *)&c_addr ,&clen);//连接到客户端之后,后续的操作用返回值c_fd来操作if(c_fd == -1){perror("accept");}printf("get connect : %s\n",inet_ntoa(c_addr.sin_addr));//把网络格式的IP转换为字符格式//5、readn_read = read(c_fd,redBuf,128);if(n_read == -1){perror("read");}else{printf("get message : %d,%s\n",n_read,redBuf);}//6、writewrite(c_fd,retmessage,strlen(retmessage));return 0;
}
在新的界面,telnet + ip + 端口号,实现连接
输出结果:
Trying 172.0.0.1...
Connected to 172.0.0.1.
Escape character is '^]'.
laowang
I get your message!
Connection closed by foreign host.
另一个界面:
get connect : 172.0.0.1
get message : 8,laowang
相关文章:
Linux--socket编程--服务端代码
查看struct sockaddr_in包含的东西: 在/user/include下搜索:grep "struct sockaddr_in { " * -nir r : 递归 i : 不区分大小写 n : 显示行号 socket编程–服务端代码 /* 1、调用 socket 创建套接字 2、调用 bind 添加地址 3、lis…...
安装Vue脚手架图文详解教程
版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl 预备工作 在安装Vue脚手架之前,请确保您已经正确安装了npm;假若还尚未安装npm,请你参考 Node.js安装教程图文详解。 安装Vue脚手架 请…...
宠物医院必备,介绍一款宠物疫苗接种管理软件
在当今社会,养宠物已经成为越来越多人的生活方式,宠物疫苗接种已是宠物医院的重要工作,但是目前绝大多数的宠物医院对疫苗接种的管理,还是采取人工登记方式,不仅效率低下,而且无法做到疫苗接种到期自动提醒…...
哈哈,我保研985了,之后会出一期保研经验分享
哈哈,我保研了,之后会出一期保研经验分享 个人背景 学校:河南某四非,计算机科学与技术专业英语成绩:四级439,六级438(夏令营无六级)科研经历:一个软著、国家级大创&…...
C++ 程序员入门之路——旅程的起点与挑战
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
C/C++ 数组面试算法题
1.将一个数组逆序输出 https://blog.csdn.net/qq_45385706/article/details/110739961 1 #include<stdio.h>2 3 #define N 94 5 int main()6 {7 int a[N] {1,2,3,4,5,6,7,8,9};8 for(int i 0;i<N/2;i)9 { 10 int temp a[i]; 11 a[i]…...
【pwn入门】用gdb实现第1个pwn
声明 本文是B站你想有多PWN学习的笔记,包含一些视频外的扩展知识。 有问题的源码 #include <stdio.h> #include <stdlib.h> #include <unistd.h> char sh[]"/bin/sh"; int func(char *cmd){system(cmd);return 0; }int main(){char …...
用pyinstaller打包LGBM模型为ELF/EXE可执行文件
1. 引入 写好的python代码和模型,如果需要做到离线部署、运行,就必须要将代码和模型打包为可独立运行的可执行文件。 使用pyinstaller就能做到这个,相同的代码,在windows上运行就能打包为exe,在linux上运行就能打包为…...
软考中级—— 操作系统知识
进程管理 操作系统概述 操作系统的作用:通过资源管理提高计算机系统的效率;改善人机界面向用户提供友好的工作环境。 操作系统的特征:并发性、共享性、虚拟性、不确定性。 操作系统的功能:进程管理、存储管理、文件管理、设备…...
我们是否真的需要k8s?
文章目录 背景k8s相关的讨论为什么要用k8sk8s带来了什么当前业务使用到k8s的核心优势了吗直接自己买服务器会不会更便宜?其他QA没有人可以说出来为什么一定要用k8s而不是其他的没有人可以解释为什么成本核算困难以及成本这么高的原因没有人给出面向C端,面…...
基于蜉蝣优化的BP神经网络(分类应用) - 附代码
基于蜉蝣优化的BP神经网络(分类应用) - 附代码 文章目录 基于蜉蝣优化的BP神经网络(分类应用) - 附代码1.鸢尾花iris数据介绍2.数据集整理3.蜉蝣优化BP神经网络3.1 BP神经网络参数设置3.2 蜉蝣算法应用 4.测试结果:5.M…...
前端系列-1 HTML+JS+CSS基础
背景: 前端系列会收集碎片化的前端知识点,作为自己工作和学习时的字典,欢迎读者收藏和使用。 笔者是后端开发😶前端涉猎不深,因此文章重在广度和实用,对原理和性能不会过多深究。 1.html 1.1 html5网页结…...
Learning Invariant Representation for Unsupervised Image Restoration
Learning Invariant Representation for Unsupervised Image Restoration (Paper reading) Wenchao Du, Sichuan University, CVPR20, Cited:63, Code, Paper 1. 前言 近年来,跨域传输被应用于无监督图像恢复任务中。但是,直接应用已有的框架…...
1.4.C++项目:仿muduo库实现并发服务器之buffer模块的设计
项目完整版在: 一、buffer模块: 缓冲区模块 Buffer模块是一个缓冲区模块,用于实现通信中用户态的接收缓冲区和发送缓冲区功能。 二、提供的功能 存储数据,取出数据 三、实现思想 1.实现换出去得有一块内存空间,采…...
AndroidStudio精品插件集
官网 项目地址:Github博客地址:Studio 精品插件推荐 使用需知 所有插件在 Android Studio 2022.3.1.18(长颈鹿)上测试均没有问题,推荐使用此版本Android Studio 2022.3.1.18(长颈鹿)正式版下…...
java图书管理系统
一、 引言 图书管理系统是一个用于图书馆或书店管理图书信息、借阅记录和读者信息的应用程序。本系统使用Java Swing框架进行开发,提供直观的用户界面,方便图书馆管理员或书店工作人员对图书信息进行管理。以下是系统的设计、功能和实现的详细报告。 二…...
大屏自适应容器组件-Vue3+TS
1.引言 在做数字大屏时,图表能跟着浏览器的尺寸自动变化,本文采用Vue3前端框架,采用TypeScript语言,封装了一个大屏自适应组件,将需要显示的图表放入组件的插槽中,就能实现自适应屏幕大小的效果。 2.实际…...
java图书信息管理
一、项目概述 本图书信息管理系统旨在提供一个直观的用户界面,用于管理图书馆或书店的图书信息。系统包括图书添加、查询、借阅和归还等功能。 二、系统架构 系统采用JavaSwing作为前端UI框架,后端使用Java Servlet处理业务逻辑,数据存储在…...
apache服务器出现No input file specified.解决方案
APACHE服务器出现No input file specified.解决方案 thinkcmf程序默认的.htaccess里面的规则: <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ index.php/$1 [QSA…...
你写过的最蠢的代码是?——全栈开发篇
🌷🍁 博主猫头虎 带您 Go to New World.✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺 &a…...
Rufus安装ubantu系统全过程
清水补充:这次安装的是ubantu22.04版本,准备来给两个电脑装,内存分配是分别是,微星老电脑是一个盘200G,/boot 使用1G,/swap 17G , 、/ 根目录90G,/home 文件目录96G ,实验…...
SEO_从基础到精通,系统学习SEO的完整路径解析
<h2>SEO的基础:了解搜索引擎优化的核心概念</h2> <p>搜索引擎优化(SEO)是一个广泛且复杂的领域,它的核心在于提升网站在搜索引擎结果页面(SERP)中的自然排名。了解SEO的基础概念是每一个…...
Spring Boot 中 Quartz 与 PostgreSQL 持久化实战:构建可视化定时任务管理平台
1. 为什么需要定时任务持久化 在企业级应用开发中,定时任务就像是一个不知疲倦的闹钟,每天准时叫醒你的业务逻辑。但传统的Scheduled注解方式有个致命缺陷——所有的任务配置都硬编码在代码里。想象一下,每次修改任务执行时间都需要重新部署应…...
从逻辑门到CPU:计算机工作原理详解
戏说CPU的工作原理:从逻辑门到计算系统1. 计算系统的基本构建单元1.1 逻辑门的物理实现计算系统最基本的构建单元是逻辑门,它们可以通过简单的物理实体来演示。以三名士兵为例,我们可以构建最基本的逻辑运算单元:输入单元…...
基于ZLMediaKit API的Java流媒体服务实战:从配置到核心功能封装
1. ZLMediaKit快速入门与环境搭建 第一次接触ZLMediaKit时,我被它的轻量级和高性能所吸引。作为一款开源的流媒体服务器,它支持RTSP、RTMP、HLS等多种协议,特别适合中小型视频项目的快速部署。记得当时为了测试性能,我在一台2核4G…...
梦行云软件——溯源系统-》企业方》产品溯源管理》员工管理
梦行云软件——溯源系统-》企业方》产品溯源管理》员工管理 湖南梦辰软件开发有限公司是立足怀化、服务全国的数字化技术服务商。公司拥有19项软件著作权及多项自主知识产权。专注于Web系统、APP与小程序定制开发,提供全链路数字化解决方案。以合规先行与稳定交付为…...
el-tabs报错Cannot read properties of null (reading ‘insertBefore‘)
使用elementui-plus的tabs组件在开发中遇到的一个问题,分析了代码,发现逻辑没有任何问题,但是点击tab切换就会报错:Uncaught (in promise) TypeError: Cannot read properties of null (reading insertBefore)调试发现parent参数是…...
前端未来趋势:别再用老掉牙的技术了
前端未来趋势:别再用老掉牙的技术了 各位前端同行,咱们今天聊聊前端未来趋势。别告诉我你还在使用老掉牙的技术,那感觉就像在使用诺基亚手机。 为什么你需要关注前端未来趋势 最近看到一个项目,还在使用 jQuery,我差点…...
系统架构设计师知识点21-40
21.ABSD方法的三个基础。①功能分解,使用已有的基于模块的内聚与耦合技术②选择架构风格实现质量和业务需求③软件模板使用22.ABSD方法是一个自顶向下,递归细化的方法,软件系统的体系结构通过该方法得到细化,直到能产生软件构件和…...
基于Matlab的11种图像清晰度评价指标:直接可运行,联系我
基于matlab图像清晰度评价指标。 一共11种。 程序已调通,可直接运行。 需要直接联系。 基于matlab图像清晰度评价指标。 一共11种。 程序已调通,可直接运行。 需要直接联系。 图像剃度的清晰度评价(EOG, Roberts, Tenengrad, Brenner,Variance, Laplace,…...
