⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 server.c

📁 Linux下实现的socket通信
💻 C
字号:
#include <sys/types.h> 
#include <sys/socket.h> 
#include <stdio.h> 
#include <sys/un.h> 
#include <unistd.h> #include <sys/wait.h>#define C2_LEN 20
int main() 
{ char ch1[C2_LEN],ch2[C2_LEN]={'0','0','0','0','0','0','0',0};
int server_sockfd,client_sockfd; 
int server_len,client_len; 
struct sockaddr_un server_address; 
struct sockaddr_un client_address; 
unlink("server_socket"); 
/*如果存在同名的套接口,则先删除*/ 
if((server_sockfd=socket(AF_UNIX,SOCK_STREAM,0))==-1) 
    { /*错误检测  */  
        perror("socket"); 
         exit(1); 
    }   
/*以上建立套接口,这时候无名*/ 
server_address.sun_family=AF_UNIX; 
strcpy(server_address.sun_path,"server_socket"); 
server_len=sizeof(server_address); 
if(bind(server_sockfd,(struct sockaddr *)&server_address,server_len)==-1) 
    {/*错误检测*/  
        perror("bind"); 
        exit(1);  
    } 
if(listen(server_sockfd,5)) 
     {/*错误检测*/   
         perror("listen");  
        exit(1); 
     } 
/*以上创建监听队列.等待用户的连接请求*/ 
while(1) 
{ printf("input Data you want to send:");
scanf("%s",&ch1);if(strcmp(ch1,ch2)==0)continue;strcpy(ch2,ch1);
printf("server waiting\n"); 
if((client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,&client_len))==-1)
	{   
            perror("accept"); 
            continue;  
        }  
/*以上接受一个客户的请求*/ 
//read(client_sockfd,&ch,1); 
/*因为连接一旦建立,客户就会先发消息过来,所以服务器先读*/ 


//write(client_sockfd,&ch,1); 
/*把读取的字符串做简单处理,回送*/ 
//close(client_sockfd); 

pid_t pid = fork(); 
       if (pid == 0) 
        { /* 子进程代码段  */
            if (write(client_sockfd,&ch1,C2_LEN)== -1)
            {   
                perror("write"); 
                close(client_sockfd); 
            }
            exit(0);     
        }
        else
        {/* 父进程代码      */     
           close(client_sockfd);  /* 父进程不再需要该socket */

            pid_t pid2 = waitpid(-1,NULL,WNOHANG);   /*等待子进程结束,清除子进程所占用资源  */
            if(pid2 > 0)
            {
                printf("child %d terminated \n",pid2);
            }  
 
        }  
} 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -