X-Git-Url: http://git.megacz.com/?p=nestedvm.git;a=blobdiff_plain;f=src%2Ftests%2FTest.c;fp=src%2Ftests%2FTest.c;h=c223d1cc0dbeea4010f5184b892a92fa298f9e78;hp=2c700262a325426885c444884ac2af9c555de351;hb=7ee9c4231f8e74adfde9679bc60783a715f69c2a;hpb=c1376aca03955e85c280f822dc10a305cf6bc124 diff --git a/src/tests/Test.c b/src/tests/Test.c index 2c70026..c223d1c 100644 --- a/src/tests/Test.c +++ b/src/tests/Test.c @@ -101,6 +101,36 @@ int main(int argc, char **argv) { } else if(argc > 2 && strcmp(argv[1],"crashme") == 0) { volatile int *mem = (int*) atoi(argv[2]); *mem = 1; + } else if(argc > 2 && strcmp(argv[1],"get") == 0) { + extern int _open_socket(const char *host, int port); + fd = _open_socket(argv[2],80); + if(fd == -1) { perror("open_socket"); exit(EXIT_FAILURE); } +#define REQ "GET / HTTP/1.0\r\n\r\n" + n = write(fd,REQ,strlen(REQ)); + if(n != strlen(REQ)) { perror("write"); exit(EXIT_FAILURE); } + for(;;) { + n = read(fd,buf,sizeof(buf)); + if(n < 0) { perror("read"); exit(EXIT_FAILURE); } + if(n == 0) break; + write(1,buf,n); + } + } else if(argc > 1 && strcmp(argv[1],"server") == 0) { + extern int _listen_socket(int port); + extern int _accept(int fd); + + int server = _listen_socket(2000); + if(server< 0) { perror("server_socket"); exit(EXIT_FAILURE); } + while((fd = _accept(server)) >= 0) { + char buf2[1024]; + int n = read(fd,buf,sizeof(buf)); + if(n < 0) { perror("read"); continue; } + if(n == 0) continue; + while(n > 0 && (buf[n-1] == '\r' || buf[n-1] == '\n')) n--; + buf[n] = '\0'; + snprintf(buf2,sizeof(buf2),"Hello, %s from nestedvm's socket support\r\n",buf); + write(fd,buf2,strlen(buf2)); + close(fd); + } } else { printf("%d\n", 0xffffff); printf("%u\n", 0xffffffU);