Linux c++开发-11-Socket TCP编程简单案例
服务端:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <netinet/in.h>
#include <sys/types.h>#include <errno.h>int main(void)
{//1.socketint server_sock = socket(AF_INET, SOCK_STREAM, 0);// addressstruct sockaddr_in server_addr;server_addr.sin_addr.s_addr = INADDR_ANY;server_addr.sin_port = htons(9001);server_addr.sin_family = AF_INET; //2.bindif ( (bind(server_sock, (struct sockaddr*) &server_addr, sizeof(server_addr))) != 0 ){fprintf(stderr, "couldn't bind: %s\n", strerror(errno));exit(EXIT_FAILURE);}//3.listenif ((listen(server_sock, 10)) != 0){fprintf(stderr, "couldn't listen: %s\n", strerror(errno));exit(EXIT_FAILURE);}int client_sock;//4.acceptif( (client_sock = accept(server_sock, NULL, NULL)) == -1 ){fprintf(stderr, "couldn't accept: %s\n", strerror(errno));exit(EXIT_FAILURE);}char send_message[255] = "hello i am server";send(client_sock, send_message, sizeof(send_message), 0);char buf[256];recv(client_sock,buf,sizeof(buf),0);printf("Server recv:%s\n",buf);close(server_sock);close(client_sock);return 0;
}
客户端:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>#include <sys/types.h>
#include <sys/socket.h>
#include <unistd.h>#include <netinet/in.h>#include <errno.h>int main(void){//1.create sockint sock = socket(AF_INET, SOCK_STREAM, 0);if(sock < 0){fprintf(stderr, "can't create socket because of %s\n", strerror(errno));exit(EXIT_FAILURE);}//create addressstruct sockaddr_in server_addr;server_addr.sin_addr.s_addr = INADDR_ANY;server_addr.sin_port = htons(9001);server_addr.sin_family = AF_INET;//connectif( (connect(sock, (struct sockaddr*)&server_addr, sizeof(server_addr))) == -1 ){perror("connect error because of: ");close(sock);exit(EXIT_FAILURE);}//create recv buffer and recvchar recv_buffer[255];recv(sock, recv_buffer, sizeof(recv_buffer), 0);//printprintf("printf recv: %s\n", recv_buffer);char send_message[255] = "I Love China!";send(sock, send_message, sizeof(send_message), 0);close(sock);return 0;
}
结果:

相关文章:
Linux c++开发-11-Socket TCP编程简单案例
服务端: #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <netinet/in.h> #include <sys/types.h>#include <errno.h>int main(void) {//1.socketint server_sock socket(A…...
ros2机器人常规控制流程
The joint_state_publisher reads the robot_description parameter from the parameter server, finds all of the non-fixed joints and publishes a JointState message with all those joints defined.也就是说如果我们不需要控制机器人运动,只需要一个节点就可…...
分布式全局ID之雪花算法
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加 雪花算法 提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 系列文章目录前言一、什么是雪花算法?…...
拿到服务器该做的事和升级docker engine
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginsudo -i # 切换到 root 用户apt update -y # 升级 packagesapt install wget curl sudo vim git -y # Debian 系统比较干净,安装常用的软件 安装docker …...
【VScode和Leecode的爱恨情仇】command ‘leetcode.signin‘ not found
文章目录 一、关于command ‘leetcode.signin‘ not found的问题二、解决方案第一,没有下载Nodejs;第二,有没有在VScode中配置Nodejs第三,力扣的默认在VScode请求地址中请求头错误首先搞定配置其次搞定登入登入方法一:…...
mangokit:golang web项目管理工具,使用proto定义http路由和错误
文章目录 前言1、mangokit介绍1.1 根据proto文件生成http路由1.2 根据proto文件生成响应码1.3 使用wire来管理依赖注入 2、mangokit实现2.1 protobuf插件开发2.2 mangokit工具 3、使用示例3.1 创建新项目3.2 添加新的proto文件3.3 代码生成 前言 在使用gin框架开发web应用时&a…...
微信小程序实现一个简单的登录功能
微信小程序实现一个简单的登录功能 功能介绍login.wxmllogin.jsuserInfo.wxmluserInfo.js解析 功能介绍 微信小程序实现一个简单的登录功能。包括一个登录页面和一个用户信息展示页面。在登录页面中输入用户名和密码,点击登录按钮进行验证,如果验证成功&…...
whisper深入-语者分离
文章目录 学习目标:如何使用whisper学习内容一:whisper 转文字1.1 使用whisper.load_model()方法下载,加载1.2 使用实例对文件进行转录1.3 实战 学习内容二:语者分离(pyannote.audio)pyannote.audio是huggi…...
LuaJava操作Java的方法
最近在学习lua,然后顺便看了下luaj,可能用的人比较少,网上关于luaj的文章较少,其中在网上找到这个博主的相关文章,很详细,对于要学习luaj的小伙伴可以两篇一起查看,本文在此基础上进行扩展。 …...
oracle怎样才算开启了内存大页?
oracle怎样才算开启了内存大页? 关键核查下面三点: 1./etc/sysctl.conf vm.nr_hugepages16384这是给了32G,计划sga给30G,一般需多分配2-4G sysctl -p生效 看cat /proc/meminfo|grep Huge啥结果? 这种明显是配了…...
【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param
determine_dl_model_detection_param 目标检测的数据准备过程中的有一个库函数determine_dl_model_detection_param “determine_dl_model_detection_param” 直译为 “确定深度学习模型检测参数”。 这个过程会自动针对给定数据集估算模型的某些高级参数,强烈建议…...
跟着我学Python进阶篇:01.试用Python完成一些简单问题
往期文章 跟着我学Python基础篇:01.初露端倪 跟着我学Python基础篇:02.数字与字符串编程 跟着我学Python基础篇:03.选择结构 跟着我学Python基础篇:04.循环 跟着我学Python基础篇:05.函数 跟着我学Python基础篇&#…...
neo4j-Py2neo使用
neo4j-Py2neo(一):基本库介绍使用 py2neo的文档地址:https://neo4j-contrib.github.io/py2neo/ py2neo的本质是可以采用两种方式进行操作,一种是利用cypher语句,一种是使用库提供的DataTypes,Data类的实例需要和远程…...
uint29传输格式
前言 不知道谁想出来的。 反正我是想不到。 我看网上也没人讲这个。 写篇博客帮一下素未谋面的网友。 uint29 本质上是网络传输的时候,借用至多4字节Bytes,表达29位的无符号整数。 读8位数字,判断小于128? 是的话,返回末7位…...
Linux:终端定时自动注销
这样防止了,当我们临时离开电脑这个空隙,被坏蛋给趁虚而入 定几十秒或者分钟,如果这个时间段没有输入东西那么就会自动退出 全局生效 这个系统中的所有用户生效 vim /etc/profile在末尾加入TMOUT10 TMOUT10 这个就是10 秒,按…...
STM32F103RCT6开发板M3单片机教程06--定时器中断
前言 除非特别说明,本章节描述的模块应用于整个STM32F103xx微控制器系列,因为我们使用是STM32F103RCT6开发板是mini最小系统板。本教程使用是(光明谷SUN_STM32mini开发板) STM32F10X定时器(Timer)基础 首先了解一下是STM32F10X…...
数据库故障Waiting for table metadata lock
场景:早上来发现一个程序,链接mysql数据库有点问题,随后排查,因为容器在k8s里面。所以尝试重启了pod没有效果 一、重启pod: 这里是几种在Kubernetes中重启Pod的方法: 删除Pod,利用Deployment重建 kubectl delete pod mypodDepl…...
Springboot数据校验与异常篇
一、异常处理 1.1Http状态码 HTTP状态码是指在HTTP通信过程中,服务器向客户端返回的响应状态。它通过3位数字构成,第一个数字定义了响应的类别,后两位数字没有具体分类作用。以下是常见的HTTP状态码及其含义: - 1xx(信…...
第三十六章 XML 模式的高级选项 - 创建子类型的替换组
文章目录 第三十六章 XML 模式的高级选项 - 创建子类型的替换组创建子类型的替换组将子类限制在替换组中 第三十六章 XML 模式的高级选项 - 创建子类型的替换组 创建子类型的替换组 XML 模式规范还允许定义替换组,这可以是创建选择的替代方法。语法有些不同。无需…...
堆与二叉树(上)
本篇主要讲的是一些概念,推论和堆的实现(核心在堆的实现这一块) 涉及到的一些结论,证明放到最后,可以选择跳过,知识点过多,当复习一用差不多,如果是刚学这一块的,建议打…...
终极抢票指南:5分钟搭建全自动抢票系统,告别手速焦虑!
终极抢票指南:5分钟搭建全自动抢票系统,告别手速焦虑! 【免费下载链接】damaihelper 支持大麦网,淘票票、缤玩岛等多个平台,演唱会演出抢票脚本 项目地址: https://gitcode.com/gh_mirrors/dam/damaihelper 还在…...
无需写代码!用 PackSoft 做数字展厅大屏
前言 做过展厅项目的朋友都懂这种痛—— 客户参观来了,讲解员打开浏览器,地址栏、书签栏、收藏夹全暴露在屏幕上,旁边还挂着一个没关的 QQ 弹窗……高端大气的数字展厅,体验瞬间拉低一个档次。 更麻烦的是:大屏全屏…...
BBDown完全指南:5分钟掌握B站视频下载终极方案
BBDown完全指南:5分钟掌握B站视频下载终极方案 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 你是否经常遇到想收藏B站优质视频却找不到合适工具的困扰?当网络…...
OpenAPI规范自动生成CLI工具:原理、实现与工程实践
1. 项目概述:从API文档到命令行工具的自动化革命如果你是一名后端开发者,或者经常需要与各种RESTful API打交道,那么下面这个场景你一定不陌生:产品经理或前端同事跑过来,递给你一份新鲜出炉的OpenAPI/Swagger规范文档…...
程序员转智能体开发,从入门到落地,看这一篇就够了
文章目录前言一、为什么2026年是转智能体开发的最佳时机1.1 市场需求爆炸式增长,薪资再创新高1.2 传统程序员转型有三大天然优势二、智能体开发到底是什么?和传统开发有什么区别?2.1 从"命令式"到"声明式"的思维转变2.2 …...
想让你的Linux终端也下起‘代码雨’?手把手教你安装配置cmatrix屏保(CentOS/Ubuntu双系统保姆级教程)
让你的Linux终端下起"代码雨":cmatrix屏保终极玩法指南 第一次在《黑客帝国》里看到绿色字符如瀑布般倾泻而下的场景时,那种科技感与未来感是否让你心驰神往?现在,你完全可以在自己的Linux终端里复刻这一经典画面。cmat…...
终极指南:Flair如何引领NLP技术未来发展趋势
终极指南:Flair如何引领NLP技术未来发展趋势 【免费下载链接】flair A very simple framework for state-of-the-art Natural Language Processing (NLP) 项目地址: https://gitcode.com/gh_mirrors/fl/flair Flair是一个由柏林洪堡大学开发的简单而强大的自…...
一键式自动化工具OneClickCopaw:从Shell脚本到CI/CD的部署实践
1. 项目概述与核心价值最近在折腾一些自动化脚本时,发现了一个挺有意思的项目,叫iwanglei1/OneClickCopaw。光看名字,你可能会有点懵,“Copaw”是什么?其实,这是一个典型的“一键式”自动化工具,…...
从手忙脚乱到智能掌控:League-Toolkit如何解决你的英雄联盟痛点
从手忙脚乱到智能掌控:League-Toolkit如何解决你的英雄联盟痛点 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit 你是否曾经在极地大…...
