戳人痛处

导航

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 2020-11-25 14:34  戳人痛处  阅读(410)  评论(0编辑  收藏  举报