source: trunk/CrypPlugins/KeySearcher/ExternalClient/Network.cpp @ 2205

Last change on this file since 2205 was 2205, checked in by Sven Rech, 11 years ago

Added external client for other plattforms which can be used to support the keysearcher (client doesn't work yet)

File size: 2.0 KB
Line 
1#include <ctype.h>
2#include <stdio.h>
3#include <stdlib.h>
4#include <sstream>
5#include <unistd.h>
6#include <sys/types.h>
7#include <arpa/inet.h>
8#include <sys/sysctl.h>
9
10#include <sys/types.h>
11#include <sys/sysctl.h>
12
13
14
15#include "PlatformIndependentWrapper.h"
16#include "Opcodes.h"
17#include "Job.h"
18#include "Cryptool.h"
19
20std::string getIdentificationStr()
21{
22    std::stringstream out;
23    out << "cores:";
24    out << sysconf( _SC_NPROCESSORS_ONLN );
25    // todo: more
26    return out.str();
27}
28
29void GetJobsAndPostResults(PlatformIndependentWrapper wrapper)
30{
31    wrapper.WriteInt(ClientOpcodes::HELLO);
32    wrapper.WriteString(getIdentificationStr());
33
34    // loop will be escaped by wrapper exceptions
35    while(true)
36    {
37        switch(wrapper.ReadInt())
38        {
39            case ServerOpcodes::NEW_JOB:
40                {
41                    Job j;
42                    j.Guid = wrapper.ReadString();
43                    j.Src = wrapper.ReadString();
44                    j.Input= wrapper.ReadString();
45                    printf("Got new job! guid=%s\n", j.Guid.c_str());
46
47                    doOpenCLJob(j);
48
49                    wrapper.WriteInt(ClientOpcodes::JOB_RESULT);
50                    wrapper.WriteString(j.Guid);
51                    wrapper.WriteString("not founds anythings :(");
52                }
53                break;
54        }
55    }
56}
57
58void networkThread(sockaddr_in serv_addr, int port)
59{
60    printf("Connecting to %s on port %i\n", inet_ntoa(serv_addr.sin_addr), port);
61    int sockfd = socket(AF_INET, SOCK_STREAM, 0);
62
63    if (sockfd < 0) 
64    {
65        printf("ERROR opening socket\n");
66        return;
67    }
68    printf("Connecting established\n");
69    if (connect(sockfd, (sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
70    {
71        printf("Couldn't connect\n");
72        close(sockfd);
73        return;
74    }
75
76    try{
77        PlatformIndependentWrapper w(sockfd);
78        GetJobsAndPostResults(w);
79    } catch(SocketException)
80    {
81        close(sockfd);
82        return;
83    }
84}
85
Note: See TracBrowser for help on using the repository browser.