A simple Linux Socket

从DDH到FastANI:原核生物分类黄金标准的进化史与技术对比 本文系统梳理了原核生物分类标准从DDH到FastANI的四次技术革命,详细解析了95%相似度阈值的科学依据及应用场景。通过对比DDH、16S rRNA、ANI和FastANI的技术特点与性能指标,为微生物研究者提供基因组分类的实战指南,并展望第三代测序时代的分类新挑战。 阅读详情

/******************************A simple Linux Socket*******************************************

*

*************************************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <iostream.h>
 #include <unistd.h>//close(socket)
 #include <arpa/inet.h>//inet_ntoa()
// 服务器要监听的本地端口
#define MYPORT 4000
// 能够同时接受多少没有accept 的连接
#define BACKLOG 5
using namespace std;
string Compare(int rand_num, int num)

 string str="good!";//用于返回比较结果 good表示相等.
 if(rand_num==num)
  return str;
 rand_num < num ? (str="大了!"):(str="小了!");//比较
 return str;
}

int main()
{
 int rand_num=0; //产生的随机数
 int cli_num=0;//用于接收用户数字
 string send_str="";//用于发送/返回比较的结果

 /* 在sock_fd 上进行监听,new_fd 接受新的连接 */
 int sockfd, new_fd ;
 /* 自己的地址信息 */
 struct sockaddr_in my_addr;
 /* 连接者的地址信息*/
 struct sockaddr_in their_addr;
// int sin_size;
 socklen_t sin_size;
 /* 如果调用socket() 出错,则返回 */
 cout<<"Creating socket..."<<endl;
 if ((sockfd =socket(AF_INET, SOCK_STREAM, 0)) == -1)
 {
  /* 输出错误提示并退出 */
  perror("socket error");
  cout<<errno<<endl;
  exit(1);
 }
 cout<<"[ok]"<<endl;
 /* 主机字节顺序 */
 my_addr.sin_family = AF_INET;
 /* 网络字节顺序,短整型 */
 my_addr.sin_port = htons(MYPORT);
 /* 将运行程序机器的IP 填充入s_addr */
 my_addr.sin_addr.s_addr = INADDR_ANY;
 /* 将此结构的其余空间清零 */
 bzero(&(my_addr.sin_zero), 8);
 cout<<"binding..."<<endl;
 if (bind(sockfd, (struct sockaddr *)&my_addr,sizeof(struct sockaddr)) == -1)
 {
  /* 如果调用bind()失败,则给出错误提示,退出 */
  perror("bind error");
  cout<<errno<<endl;
  exit(1);
 }
 cout<<"[ok]"<<endl;
 if (listen(sockfd, BACKLOG) == -1)
 {
  /* 如果调用listen 失败,则给出错误提示,退出 */
  perror("listen error");
  cout<<errno<<endl;
  exit(1);
 }

 srand(time(NULL));
 rand_num=(int)(32766.0*rand()/(RAND_MAX+1.0)+1.0);//产生随机数1-32767
 cout<<"rand_num is  "<<rand_num<<endl;

 cout<<"Listening..."<<endl;
 while(1)
 {
  /* 这里是主accept()循环 */
  //sin_size = sizeof(struct sockaddr_in);
  sin_size= sizeof(their_addr);
  
  /* 这里将建立一个子套接字来和刚刚建立的套接字进行通讯 */ 
  if ((new_fd = accept(sockfd, (struct sockaddr *)&their_addr, &sin_size)) == -1)
  {
   /* 如果调用accept()出现错误,则给出错误提示,进入下一个循环 */
   perror("accept error ");
   cout<<errno<<endl;
   continue;
  }
 
  /* 服务器给出出现连接的信息 */
  printf("server: Got connection from %s/n", inet_ntoa(their_addr.sin_addr));  
 
  send(new_fd, "Please input a number:",36 , 0);
  if(recv(new_fd,&cli_num,sizeof(cli_num),0)==-1)//接收数据
  {
   perror("recv error");
   cout<<errno<<endl;
   exit(1);
  }
  cout<<"Received a number.  num="<<cli_num<<endl;

  send_str=Compare(rand_num,cli_num);
  if (send(new_fd, &send_str, sizeof(send_str), 0) == -1)//返回结果
  {
   /* 如果错误,则给出错误提示,然后关闭这个新连接,退出 */
   perror("send error");
   cout<<errno<<endl;
   close(new_fd);
   exit(1);
  }
  
  /* 关闭new_fd 代表的这个套接字连接 */
  close(new_fd);  
 } 
 /* 等待所有的子进程都退出 */
// while(waitpid(-1,NULL,WNOHANG) > 0);

 return 0;

}
 

Claude code 入门 安装和快速使用 Claude Code 可以理解为一个。你只需要用简单的语言告诉它要做什么,比如「帮我整理这些文件」、「改一下这个程序」、「分析一下这些数据」,它就能理解你的电脑项目,并自动完成很多操作。,比如整理文件、编程、数据分析…等等。使用终端、命令行还是挡住了非常多的朋友,这个时候,有个界面很重要!Claude code、Codex 官方也都推出了插件,安装即可使用。 阅读详情

相关推荐

Simple-Socket:一种通过C++编写Linux socket API发送和接收数据的简单方法

简单套接字 一种通过C++编写Linux socket API发送和接收数据的简单方法 功能 创建服务器类型和客户端类型 Socket 在队列中添加稍后可以通过套接字发送的消息 管理块并将它们连接起来以重新创建完整的消息 有关其他功能,请参阅 Socket.hh 资讯 某些函数调用可能会阻塞,例如 acceptConnection() 和 receiveMsg(),您需要使用 select() 处理文件描述符以避免这种情况。 (可能会在未来版本中实现) 如果函数失败并返回 false,您可以使用 getError() 获取最后一个错误 默认网络接口是 wlan0 例子 使用示例请参见 main_server.cpp 和 main_client.cpp。

Linux下常用的C/C++开源Socket

Linux下常用的C/C++开源Socket库!

网络资源是无限的 4万+

SymphoniePRO Fleet

SymphoniePRO Fleet

C: Linux Socket Programming, TCP, a simple HTTP client - 安東尼隨手記 - Yahoo!奇摩部落格

C: Linux Socket Programming, TCP, a simple HTTP client - 安東尼隨手記 - Yahoo!奇摩部落格 C: Linux Socket Programming, TCP, a simple HTTP client ...

130

LinuxSocket编程之TCP Server端

LinuxSocket编程之TCP Server端 2010年07月16日   一。建模   绝大部分关于socket编程的教程总是从socket的概念开始讲起的。要知道,socket的初衷是个庞大的体系,TCP/IP只是这个庞大体系下一个很小的子集,而我们真正能用上的更是这个子集中的一小部分:运输层(Host-to-Host Transport Layer)的TCP和UDP协议,...

mln662vj 232

linux socket programing

There is a blog, I think it`s worth reading. linux socket programing

Michael Jay 深度挖掘机 431

Simple IPC by Socket on Linux

Simple IPC by Socket on LinuxCommunicate between process on the same host or different hosts.On the same host:  Use INET socket or UNIX socketOn different hosts: Use UNIX socket   Head File [sock.h]#i...

ZhihengTao的博客 5822

Linux Socket 编程实例——TCP

Linux Socket编程实例(一个Hello World程序) 在Linux下写了个小的socket程序,分为客户端和服务器端,服务端开一个端口(2000),做为一个daemon,等待客户的连接请求.一旦有客 户连接,服务器端打印出客户端的IP地址和端口,并且向服务器端发送欢迎信息和时间.下面是服务端的代码(tcpserver.c).由于这只是个简单的 程序,所以只用了单线程实现! /**

bytxl的专栏 4382

Linux socket-编程入门(TCP server 端)

原文完整内容 通常,socket编程总是Client/Server形式的,因为有了telnet,先不考虑client的程序,先写一个支持TCP协议的server端,然后用telnet作为client验证我们的程序。 TCP server端的基本流程 想象你自己是个小大佬,坐办公室(什么样的黑社会做办公室啊?可能是讨债公司吧^^)你很土,只有一个小弟帮你接电话(因为你自己的号码是...

weixin_30721077的博客 195

subversion

subversion是功能相当强大的一个版本控制器,有助于个人或团队协作进行项目的进度和版本控制。简单易用,而且是开源免费的,推荐。1 linux安装svn服务器端:        sudo apt-get install subversion可以在windows下安装客户端,这样就能很方便的在windows下写代码放linux上编译和运行了。linux下有一个svn客户端:rapidsvn2 s

民工之家 749

Linux 查看内存常用命令

<think>我们只需要根据内容生成摘要,不超过150字。内容是关于Linux命令:free -h解释内存信息,du -h --max-depth=1查看目录大小,df -h查看磁盘。注意区分。摘要要简洁。</think>本文介绍了Linux内存与磁盘查看命令:free -h以可读单位显示内存总量、已用、空闲及可用量(重点看available),并说明Swap;du -h --max-depth=1统计当前目录下各子目录大小;同时提醒df -h是查磁盘而非内存。

小刘的博客 138

linux下的nm指令

使用指令: g++ -c hello.c -o hello.o(没错,就是用c++编译器编译c文件),将hello.c编译成目标文件hello.o文件。然后使用nm指令查看hello.o文件的符号表。是 Linux 下一个非常常用的查看目标文件/可执行文件符号表(symbol table)的命令。

xinxin的博客 255

Linux与采集MCU通信为什么我们用了双SPI

<think>好的,用户需要根据一篇关于工程师使用米尔电子T113i核心板和MCU+Linux双处理器架构的实战分享,生成一篇不超过150字的摘要。内容核心是强调采用双SPI分离数据与控制通道来实现业务解耦,并点出Linux端适配和实际工程考虑的重要性要点即可。 现在规划内容,把关键信息提炼出来:文章背景是电能质量监测设备,采用MCU实时采样加Linux处理复杂功能的双处理器架构。通信方案上明确用两路SPI,一路传数据一路传指令,目的是业务解耦和逻辑清晰。最后突出工程观点,即实际协议配置与BSP生态比理论接

Jason_zhao_MR的博客 56

嵌入式从0到精通——Linux 网络通信|TCP、HTTP 网络编程

最近学完 Linux 下 TCP 以及 HTTP 网络编程部分,对比前面 UDP 通信,最大感受就是 TCP 虽然可靠性高,但内部机制复杂,坑点也更多。UDP 只管发出去就结束,而 TCP 要处理连接建立断开、丢包重传、流量控制,还会出现粘包这种容易踩坑的问题。传输层TCP: 传输控制协议 (流式套接字)应用场景:HTTPS、MQTT、FTP三次握手:TCP 建立连接时,通过三次握手,来确保通信双方都已经准备就绪。三次握手由客户端发起。数据收发:四次挥手:TCP 断开连接时,通过四次挥手,确保通信双方数据都

weixin_57202813的博客 197

Linux 输入子系统完整篇:从 input_dev、evdev 到按键/触控上报

Linux 输入子系统完整篇:从 input_dev、evdev 到按键/触控上报 写 GPIO 按键或触控驱动时,很多人直接 再自己搞字符设备——能跑,但用户态、多进程、、Android/Qt 输入栈都接不上。正确做法是走 **input 子系统**:驱动只负责采集,内核统一成 事件,经 暴露给 。本文覆盖注册、能力位、上报、同步、设备树与常见坑。 源码锚点 路径 作用 ------ ------ 、、 、、事件分发 用户态 节点、// //、键码与轴 多点触控 MT 协议辅助 、 参考实现 输入子系统文

qq_35223473的博客 133

linux 】线程互斥与同步

线程互斥与同步

2501_91146194的博客 58

Rocky Linux 8 从零安装 psql(PostgreSQL 客户端)

连接远程pgpsql -h ip地址 -p 端口 -U用户名 -d数据库名#本地登录(操作系统身份认证)psql。

m0_62164804的博客 225
上一篇: cygwin使用心得zz
下一篇: C++代码检查工具PC-Lint简介zz
whyacinth
博客等级 码龄19年 16粉丝 21原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值