戳人痛处

导航

统计

Linux socket-tcp实现简单持续接收服务端

复制代码
        #include <stdio.h>
            #include <sys/types.h>
            #include <sys/socket.h>
            #include <string.h>
            #include <netinet/in.h>
            #include <arpa/inet.h>
            #include <unistd.h>
            
            int main(int argc,char** argv)
            {
                while(1)
                {
                int sock;
                /*创建套嵌字*/
                printf("1\n");
                sock = socket(AF_INET,SOCK_STREAM,0);
                /*判断套接字创建是否成功*/
                if(sock<0)
                {
                printf("socket crteat fail");
                _exit(0);
                }
                /*创建ip、端口结构体*/
                printf("2\n");
                struct sockaddr_in sever_addr;
                /*清空结构体*/
                memset(&sever_addr,0,sizeof(sever_addr));
                sever_addr.sin_family=AF_INET;
                sever_addr.sin_addr.s_addr=htonl(INADDR_ANY);
                sever_addr.sin_port = htons(1234);
                /*绑定IP端口套嵌字*/
                printf("3\n");
                if(bind(sock, (struct sockaddr *)&sever_addr, sizeof(sever_addr))<0)
                {
                printf("绑定失败");
                _exit(0);
                }
                /*监听端口*/
                printf("4\n");
                if(listen(sock, 20)==-1)
                {
                printf("listen 失败");
                _exit(0);
                }
                /*创建客户端文件域*/
                struct sockaddr_in client_addr;
                /*接收连接请求*/
                printf("5\n");
                socklen_t len_client = sizeof(client_addr);
                int sock_client = accept(sock, (struct sockaddr *)&client_addr, &len_client);
                if(sock_client<0)
                {
                printf("accept 失败");
                _exit(0);
                }
                /*文件IO操作*/
                char read_buff[20];
                char write_buff[20];
                printf("6\n");
                while(1)
                {
                read(sock_client, read_buff, 20);
                /*printf("7\n");*/
                printf("%s",read_buff);
                /*gets(write_buff);
                write_buff[19]="/0";
                send(sock_client, read_buff, 20,0);*/
                memset(read_buff,0,sizeof(read_buff));
                /*memset(write_buff,0,20);*/
                }
                close(sock);
                close(sock_client);
                printf("8\n");
                }
            }  
复制代码

使用./server运行;accept函数处阻塞;

 

 输入ip端口

 

 点击连接

 进入while循环

可实现持续信息接收;

 

posted on   戳人痛处  阅读(429)  评论(0编辑  收藏  举报

编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示