当前位置: 首页 > news >正文

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;
}

结果:
在这里插入图片描述

http://www.lryc.cn/news/264036.html

相关文章:

  • ros2机器人常规控制流程
  • 分布式全局ID之雪花算法
  • 拿到服务器该做的事和升级docker engine
  • 【VScode和Leecode的爱恨情仇】command ‘leetcode.signin‘ not found
  • mangokit:golang web项目管理工具,使用proto定义http路由和错误
  • 微信小程序实现一个简单的登录功能
  • whisper深入-语者分离
  • LuaJava操作Java的方法
  • oracle怎样才算开启了内存大页?
  • 【halcon深度学习之那些封装好的库函数】determine_dl_model_detection_param
  • 跟着我学Python进阶篇:01.试用Python完成一些简单问题
  • neo4j-Py2neo使用
  • uint29传输格式
  • Linux:终端定时自动注销
  • STM32F103RCT6开发板M3单片机教程06--定时器中断
  • 数据库故障Waiting for table metadata lock
  • Springboot数据校验与异常篇
  • 第三十六章 XML 模式的高级选项 - 创建子类型的替换组
  • 堆与二叉树(上)
  • HBase查询的一些限制与解决方案
  • 软件开发 VS Web开发
  • 基于Springboot的旅游网站设计与实现(论文+调试+源码)
  • 【从零开始学习--设计模式--策略模式】
  • 条款6:若不想使用编译器自动生成的函数,就该明确拒绝
  • 零基础也能制作家装预约咨询小程序
  • Mybatis的插件运⾏原理,如何编写⼀个插件?
  • C++复合数据类型:字符数组|读取键盘输入|简单读写文件
  • Windows11环境下配置深度学习环境(Pytorch)
  • 泛型深入理解
  • Linux内核模块