#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <string.h>
#include <netdb.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <sys/socket.h>
#define portnumber 3333
int main(int argc, char *argv[])
{
int sockfd,new_fd;
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
int sin_size;
char hello[]="Hello! Are You Fine?\n";
/* 服务器端开始建立sockfd描述符 */
if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) // AF_INET:IPV4;SOCK_STREAM:TCP
{
fprintf(stderr,"Socket error:%s\n\a",strerror(errno));
exit(1);
}
/* 服务器端填充 sockaddr结构 */
bzero(&server_addr,sizeof(struct sockaddr_in)); // 初始化,置0
server_addr.sin_family=AF_INET; // Internet
server_addr.sin_addr.s_addr=htonl(INADDR_ANY); // (将本机器上的long数据转化为网络上的long数据)和任何主机通信 //INADDR_ANY 表示可以接收任意IP地址的数据,即绑定到所有的IP
//server_addr.sin_addr.s_addr=inet_addr("192.168.1.1"); //用于绑定到一个固定IP,inet_addr用于把数字加格式的ip转化为整形ip
server_addr.sin_port=htons(portnumber); // (将本机器上的short数据转化为网络上的short数据)端口号
/* 捆绑sockfd描述符到IP地址 */
if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
{
fprintf(stderr,"Bind error:%s\n\a",strerror(errno));
exit(1);
}
/* 设置允许连接的最大客户端数 */
if(listen(sockfd,5)==-1)
{
fprintf(stderr,"Listen error:%s\n\a",strerror(errno));
exit(1);
}
while(1)
{
/* 服务器阻塞,直到客户程序建立连接 */
sin_size=sizeof(struct sockaddr_in);
if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1)
{
fprintf(stderr,"Accept error:%s\n\a",strerror(errno));
exit(1);
}
fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr)); // 将网络地址转换成.字符串
if(write(new_fd,hello,strlen(hello))==-1)
{
fprintf(stderr,"Write Error:%s\n",strerror(errno));
exit(1);
}
/* 这个通讯已经结束 */
close(new_fd);
/* 循环下一个 */
}
/* 结束通讯 */
close(sockfd);
exit(0);
}
相关推荐
linux内核协议栈 TCP服务器端收到ACK包
Table of Contents 1 收到ACK报文处理过程概述 2 数据包入口tcp_v4_do_rcv 3 搜索 req_sock,创建新 sock (tcp_v4_hnd_req()核心) 3.1 SYN请求队列的搜索req_scok(inet_csk_search_req) 3.2创建建新sock,迁移req_sock到全连接队列 (tcp_check_req()核心) 4 创建新的 sock 过程tcp_v4_syn_recv_sock 4.1 创建新的 tcp sock...
Linux高性能服务器编程(4)TCP协议详解
TCP协议更靠近应用层,在应用程序中有更好的可操作性。TCP模块开始发送数据时,发送缓冲区中这些等待发送的数据可能被封装成一个或多个TCP报文段发出。TCP模块发送出的TCP报文段的个数和应用程序执行的写操作次数之间没有固定的数量关系。当接收端收到多个报文段时,,TCP模块将它们携带的应用程序数据按照TCP报文段的序号依次放入TCP接受缓冲区中,并通知应用程序读取数据。接收端可以选择是否一次全读取,也可分多次读取,这取决于用户指定的应用程序缓冲区的大小。
linux内核协议栈 TCP服务器端接收SYN请求段 Ⅱ 之发送SYN+ACK报文
Table of Contents 1 SYN+ACK报文发送场景概述 2SYN+ACK报文发送tcp_v4_send_synack() 2.1 SYN+ACK报文够造 tcp_make_synack() 2.1.1 SYN+ACK报文内存分配sock_wmalloc 3SYN+ACK报文超时处理tcp_synack_timer 3.1 inet_csk_reqsk_queue_prune() 1 SYN+ACK报文发送场景概述 当 tcp 服务器端收到SYN包后,将会调用 tcp...
【Linux | 网络编程】TCP的服务端(守护进程) + 客户端
上一节,我们用了udp写了一个服务端和客户端之间通信的代码,只要函数了解认识到位,上手编写是很容易的。本章我们开始编写tcp的服务端和客户端之前通信的代码,要认识一批新的接口,并将我们之前学习的系统知识加进来,做到融会贯通…
大语言模型无代码构建知识图谱概述
由示例可以看出,大语言模型的泛化能力能够非常精准的抽取文本中的实体、关系等知识信息。其能够大大提升知识提取的效率与准确性。HuggingFists低代码平台的出现进一步促进了知识图谱构建的效率。它大幅降低了知识图谱构建人员的技术要求,使得从事该工作的人员有了更大的选择范围。不断下降的构建成本,意味着可以有更多的客户享受到知识图谱带来的业务价值。
金蝶EAS uploadlogo漏洞实战:如何快速检测你的系统是否受影响
本文详细解析了金蝶EAS uploadlogo任意文件上传漏洞的检测与防护方法,帮助企业安全团队快速识别系统风险。通过资产发现、漏洞验证和应急响应方案,有效防范财务数据泄露和系统入侵风险,提升企业整体安全防护能力。
【高并发网络通信架构】1.Linux下实现单客户连接的tcp服务端
异步I/O(Asynchronous I/O):通过使用异步I/O操作,可以在所有I/O操作之后返回,而不会阻塞当前线程。这将创建一个新的套接字,用于和客户端进行通信,而原始的监听套接字继续监听新的连接请求。这将创建一个新的套接字,用于和客户端进行通信,而原始的监听套接字继续监听新的连接请求。进行数据通信(Communicate):使用已连接的套接字进行数据的读取和写入。监听连接请求(Listen):将套接字置于监听状态,等待客户端的连接请求,使用。关闭套接字(Close):当通信结束后,使用。
UE5新手必看:如何用蓝图系统快速打造赛车游戏(含Chaos Physics配置)
本文为UE5新手提供使用蓝图系统快速打造赛车游戏的完整指南,涵盖Chaos Physics配置、载具蓝图架构设计、控制逻辑实现等关键步骤。通过详细的实战案例和优化技巧,帮助开发者高效构建具备专业物理反馈的赛车游戏原型。
LinuxTCP网络通信服务器搭建
返回值:成功返回接收的字节数,失败返回-1,并设置错误码如果断开连接返回0。服务器从给客户端开的fd里收发数据,客户端从套接字sockfd里收发数据。返回值:成功返回二进制地址,失败转化无效,返回INADDR_NONE。返回值:成功返回发送的字节数,失败返回-1,并设置错误码。1.建立套接字socket(创建一个具有网络属性的文件描述符)返回值:成功返回套接字文件描述符,失败返回-1,并设置错误码。返回值:成功返回0,失败返回-1,并设置错误码。返回值:成功返回客户端的fd,失败返回-1,并设置错误码。
【向量数据库】Milvus向量数据库 ① 从入门到实战
Milvus是专为海量高维向量设计的开源数据库,支持AI搜索、图像识别、推荐系统等场景。相比传统关系型数据库(如PostgreSQL),它更高效处理语义检索、非结构化数据存储,可毫秒级响应亿级向量查询。单机场景下,推荐配置8GB内存/32GB硬盘,支持FAISS/HNSW等索引算法,支持GPU加速。本文涵盖优快云专属部署教程(CentOS脚本/配置调优),提供避坑指南与扩展资源,并对比分析与传统数据库差异。适合算法工程师、AI开发人员快速上手,附官方下载与性能测试技巧,手把手教你搭建高效向量检索系统!
Holosoma 开源人形机器人强化学习训练部署框架
Holosoma是一个综合性人形机器人框架,支持强化学习策略的训练、部署和动作重定位。该框架兼容多种模拟器(IsaacGym、IsaacSim、MuJoCo等)和机器人(Unitree G1、Booster T1),提供运动控制和全身追踪功能。主要特性包括:跨模拟器训练评估、Wandb集成、多GPU支持、自定义奖励权重和观测噪声配置。推理模块支持实体机器人部署和MuJoCo仿真测试。动作重定位工具可将人体动作数据转换为机器人动作,支持单序列和批量处理。文档详细介绍了训练配置、评估方法和高级功能,如课程学习和
Linux24 -- tcp相关概念、多个客户端链接服务端代码
tcp相关概念 多个客户端链接服务端代码
Open3D 点到面的ICP配准算法【2025最新版】
点到面的ICP(python版本)博客长期更新,本文最近一次更新时间为:2025年2月2日,代码已更新至Open3D 0.18.0版本。
Linux Tcp客户端和服务器端代码实现
1、int socket(int domain, int type, int protocol);函数解析功能:创建socket,也就是创建一个socket描述符 参数: domain :使用哪个协议族,一般情况下设为AF_INET(IPv4) type: 服务类型,主要有SOCK_STREAM流服务(TCP协议使用),SOCK_DGRAM数据报服务(UDP协议使用) protoc
15、降维算法:原理、实现与应用
本文深入介绍了多种降维算法,包括线性方法如主成分分析(PCA)和线性判别分析(LDA),以及非线性方法如Sammon映射、t分布随机邻域嵌入(t-SNE)和自编码器。文章通过C++库Dlib和Shogun展示了这些算法的具体实现,并结合图像压缩和数据可视化等实际案例,分析了不同算法的适用场景。此外,还探讨了降维算法的选择策略、优化改进方法以及未来发展趋势,为读者提供了全面的技术理解和应用指导。
YOLOv11【第二章:核心模块进阶篇·第3节】LDConv线性可变形卷积改进YOLOv11!
🏆 本文收录于专栏 《YOLOv11实战:从入门到深度优化》。本专栏围绕 YOLOv11 的改进、训练、部署与工程优化 展开,系统梳理并复现当前主流的 YOLOv11 实战案例与优化方案,内容目前已覆盖 分类、检测、分割、追踪、关键点、OBB 检测 等多个方向。
Linux 网络编程(三)——基于TCP的服务器端/客户端
3 基于TCP的服务器端/客户端 3.1 TCP 服务器端的默认函数调用顺序 3.2 TCP客户端的默认函数调用顺序 3.3 基于TCP的服务器端/客户端函数调用关系 3.4 实现迭代服务器端/客户端 3.5 回声客户端完美实现 3.5.1 回声客户端问题解决方法 3.5.2 如果问题不在回声客户端:定义应用层协议
SAP B1中文培訓教材_SDK
公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说
linux下IP v6 tcp服务器端源码示例
/******************************** server.c*******************************/#include#include#include#include#include#include#include#include#include#include#include
ET2012新版免狗免安装绿色软件
ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,
win10 跳过U8环境检测的IE WebControls.rar
win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。
linux网络编程-TCP的服务器端的简单实现(C/S)
实现了一个简单的 TCP 服务器端程序,其核心功能是创建一个监听特定 IP 地址和端口的服务器套接字,接受客户端的连接请求,并读取客户端发送的数据。
LinePhone3.2.7(android端最新版本) sip客户端
SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/
Linux C TCP服务器端-select案例
linux C TCP编程-select编程案例 I/O多路复用-高并发
Android(客户端)与Linux(服务器端)进行TCP数据通信
最近,做项目需要使用Android(客户端)与Linux(服务器端)进行数据通信,这学期也刚好学习了Linux网络编程的一些知识。所以,实现了一个小Demo,供有需要的朋友参考一下。效果如下:客户端向服务器端发送字符串数据,服务器收到客户端的数据显示在Linux终端上,并往客户端回发接收到的数据。客户端把发往服务器端的数据与接收到的数据都显示在一个TextView上面。Linux服务器端:Andro
Linux下基本TCP socket编程之服务器端
Linux下基本TCP socket编程之服务器端 http://www.cnblogs.com/rain24/archive/2011/11/18/2253571.htmlhttp://www.cnblogs.com/rain24/archive/2011/...
超级精简版!QT网络通讯TCP服务器端代码,linux和win兼容,亲测可用
超级精简版!QT网络通讯TCP服务器端代码,linux和win兼容,亲测可用 1. 简介 这篇文章还有个姐妹篇,写的客户端的代码! 客户端代码 服务器端和客户端,发送和接收部分是一样的。 需要先建立一个服务器,等待客户端连接,连接成功后就可以通讯了。 准备工作设置IP什么的,在客户端的文章里写了,这里直接看代码吧! 2. QT代码 注意:如果是Linux系统运行,需要把所有的qDebug改成qWarning。 .pro文件需要加入一行 QT += network 还是先看界面,
linux 内核协议栈原理分析之 tcp 服务器端的 send 过程
基于linux2.4.0分析,讲解通过send函数触发内核执行的整个流程。 send系统调用最终会走到内核的sys_socketcall函数。 后面的调用流程sys_send=>sys_sendto=>sock_sendmsg=>sock->ops->sendmsg 发现这个是个函数指针,具体是什么需要看初始化的时候或者accept的时候设置的函数跳转表,这个时候肯定是已经经过三次握手之后,建立的连接。为了解决这个问题,我们先看accept处理过程。 /*..
linux tcp服务器端,Linux下IP v6 tcp服务器端源码示例
/******************************** server.c*******************************/#include#include#include#include#include#include#include#include#include#include#include#define MAXBUF 1024#define LISNUM 10#d...
2212



被折叠的 条评论
为什么被折叠?



