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

📄 checka.c

📁 linux下的人机对话编程
💻 C
字号:
#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <netdb.h>#include<stdio.h>#include<string.h>main(){	int flag_A=1;	int port=8000;while(1)   {	char *host_name;	 /* attach parent's shared memory */        ap=(struct area *)shmat(shmid, 0, 0);      /* note: shmid is still set correctly */        /* set semaphore */        buf_sem.sem_op=-1;        semop(semid, (struct sembuf *) &buf_sem, 1);	host_name=ap->Ahost_name_gl;	buf_sem.sem_op=1;        semop(semid, (struct sembuf *) &buf_sem, 1);	struct sockaddr_in pin;        struct hostent *server_host_name;		char buf[8192]={};        int socket_descriptor;//resolving the host name	if((server_host_name=gethostbyname(host_name))==0)	{	close(socket_descriptor);	printf(": Error resolving local host\n");	continue;        } //init the port now	bzero(&pin,sizeof(pin));	pin.sin_family=AF_INET;	pin.sin_addr.s_addr=htonl(INADDR_ANY);	pin.sin_addr.s_addr=((struct in_addr*)(server_host_name->h_addr))->s_addr;        pin.sin_port=htons(port);//create socket	if((socket_descriptor=socket(AF_INET,SOCK_STREAM,0))==-1)	{	close(socket_descriptor);        printf(": Error create socket\n");	continue;        }//check connect	if(connect(socket_descriptor,(void*)&pin,sizeof(pin))==-1)        {	close(socket_descriptor);	if(flag_A==1)	{	 /* attach parent's shared memory */        ap=(struct area *)shmat(shmid, 0, 0);      /* note: shmid is still set correctly */        /* set semaphore */        buf_sem.sem_op=-1;        semop(semid, (struct sembuf *) &buf_sem, 1);        ap->Astate_gl=0;        buf_sem.sem_op=1;        semop(semid, (struct sembuf *) &buf_sem, 1);	flag_A=0;	}	else {}        printf(": Error connecting socket\n");	continue;        }  while(1)    {	char buf[8192]={};	char *str="check A ok?";        //check send	if(send(socket_descriptor,str,strlen(str),0)==-1)        {	 close(socket_descriptor);	 /* attach parent's shared memory */        ap=(struct area *)shmat(shmid, 0, 0);        /* set semaphore */        buf_sem.sem_op=-1;        semop(semid, (struct sembuf *) &buf_sem, 1);        ap->Astate_gl=0;        buf_sem.sem_op=1;        semop(semid, (struct sembuf *) &buf_sem, 1);         printf("Error in send\n");	 break;        }        //check receive                if(recv(socket_descriptor, buf, 8192, 0)==-1)	{	close(socket_descriptor);        printf(": Error in receive\n");	break;        }	flag_A=1;	sleep(1);    }//check result        close(socket_descriptor);	sleep(2); }//wai bu change hub while(1)}//main

⌨️ 快捷键说明

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