Exemple #1
0
void act_client(int socket) {
    FHEcontext context(gM, gP, gR);
    buildModChain(context, gL);
    FHESecKey sk(context);
    sk.GenSecKey(64);
    FHEPubKey &pk = sk;
    send_pk(socket, pk);

    std::vector<Ctxt> ctxts;
    receive_ctxt(socket, pk, ctxts);
    nn_close(socket);
}
Exemple #2
0
/*
 *选择:0<往链接写报文>/1<cd>/2<myls>/3<打开文件>/4<读取服务端文件内容并发给客户端>
 *******5<移除文件>/6<获取当前路径>/7<关闭链接>/8<退出循环>
 * */
int choice(node* n,packet* pk,int* running,char *filedir)
{
		switch(pk->type)
		{
				case 0:
						put(pk,n->put_fd);
						break;
				case 1:
						mycd(pk,n->curdir);
						send_pk(n->accept_fd,pk);
						break;
				case 2:
						myls(pk,n->curdir);
						send_pk(n->accept_fd,pk);
						break;
				case 3:
						myputs(pk,&(n->put_fd),filedir);
						send_pk(n->accept_fd,pk);
						break;
				case 4:
						mygets(n->accept_fd,pk,n->curdir);
						break;
				case 5:
						myremove(pk,n->curdir);
						send_pk(n->accept_fd,pk);
						break;
				case 6: 
						mypwd(pk,n->curdir);
						send_pk(n->accept_fd,pk);
						break;
				case 7:
						putend(&(n->put_fd));
						break;
				case 8:
						*running=0;
						break;
				default:break;
		}
		return 0;
}
Exemple #3
0
int main(int argc,char *argv[])
{
		
		if(argc!= 3)
		{
				printf("error argcs\n");
				return -1;
		}
		
		chdir("../file");
		char addr[15];
		char port[4];
		strcpy(addr,argv[1]);
		strcpy(port,argv[2]);
		printf("server: add:%s,port:%s.\n",addr,port);
		int socket_fd = socket(AF_INET,SOCK_STREAM,0);
		if(socket_fd==-1)
		{
				perror("socket() failed\n");
				return -1;
		}
		struct sockaddr_in server_addr;
		bzero(&server_addr,sizeof(server_addr));
		server_addr.sin_family=AF_INET;
		server_addr.sin_port=htons(atoi(port));
		server_addr.sin_addr.s_addr=inet_addr(addr);
		if(connect(socket_fd,(struct sockaddr*)&server_addr,sizeof(struct sockaddr))==-1)
		{
				perror("connect()\n");
				return -1;
		}
		printf("client is ready.\n");
		int epoll_fd=epoll_create(1);
		struct epoll_event ev,evs[2];
		ev.events=EPOLLIN;
		ev.data.fd=socket_fd;
		if(epoll_ctl(epoll_fd,EPOLL_CTL_ADD,socket_fd,&ev)==-1)
		{
				perror("epoll_ctl(socket_fd) failed\n");
				return -1;
		}
		ev.events=EPOLLIN;
		ev.data.fd=STDIN_FILENO;
		if(epoll_ctl(epoll_fd,EPOLL_CTL_ADD,STDIN_FILENO,&ev)==-1)
		{
				perror("epoll_ctl(STDIN) failed\n");
				return -1;
		}
		int epoll_num;
		int epoll_ev;
		packet pk;
		bzero(&pk,sizeof(pk));
		int getfd=-1;
		while(1)
		{
				bzero(&evs,sizeof(evs));
				epoll_num=epoll_wait(epoll_fd,evs,2,-1);
				if(epoll_num>0)
				{
						for(epoll_ev=0;epoll_ev<epoll_num;epoll_ev++)
						{
								if(evs[epoll_ev].data.fd==socket_fd && evs[epoll_ev].events==EPOLLIN)
								{
										recv_pk(socket_fd,&pk);
										choice(socket_fd,&pk,&getfd);
								}
								if(evs[epoll_ev].data.fd==STDIN_FILENO && evs[epoll_ev].events==EPOLLIN)
								{
										char buf[128];
										bzero(buf,sizeof(buf));
										read(STDIN_FILENO,buf,sizeof(buf));
										make(buf,strlen(buf)-1,&pk);
										send_pk(socket_fd,&pk);	
										if(strcmp("down\n",buf)==0)
										{
												close(socket_fd);
												return 0;
										}
								}
						}
				}
		}

		
}