wait for client
This commit is contained in:
parent
5920133571
commit
f9aef71a94
61
src/main.cpp
61
src/main.cpp
|
@ -8,6 +8,13 @@
|
|||
|
||||
#include <iostream>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/socket.h>
|
||||
#include <netinet/in.h>
|
||||
|
||||
const double ASPECT_RATIO = 16.0 / 9.0;
|
||||
const int WIDTH = 1920;
|
||||
const int HEIGHT = static_cast<int>(WIDTH / ASPECT_RATIO);
|
||||
|
@ -112,8 +119,62 @@ hittable_list random_scene()
|
|||
return world;
|
||||
}
|
||||
|
||||
void error(const char* message)
|
||||
{
|
||||
perror(message);
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void wait_for_client()
|
||||
{
|
||||
int sockfd, newsockfd;
|
||||
struct sockaddr_in serv_addr, cli_addr;
|
||||
socklen_t clilen;
|
||||
|
||||
// open socket and await connection from client
|
||||
sockfd = socket(AF_INET, SOCK_STREAM, 0);
|
||||
if (sockfd < 0)
|
||||
{
|
||||
error("ERROR creating socket");
|
||||
}
|
||||
|
||||
bzero((char*)&serv_addr, sizeof(serv_addr));
|
||||
|
||||
// we successfully created the socket, configure it for binding
|
||||
serv_addr.sin_family = AF_INET;
|
||||
serv_addr.sin_addr.s_addr = INADDR_ANY;
|
||||
serv_addr.sin_port = htons(64999); // convert number from host to network byte order
|
||||
|
||||
// bind the socket
|
||||
if (bind(sockfd, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) < 0)
|
||||
{
|
||||
error("ERROR binding socket");
|
||||
}
|
||||
|
||||
// successfully bound socket, start listening for connections
|
||||
listen(sockfd, 5);
|
||||
clilen = sizeof(cli_addr);
|
||||
|
||||
newsockfd = accept(sockfd, (struct sockaddr*)&cli_addr, &clilen);
|
||||
if (newsockfd < 0)
|
||||
{
|
||||
error("ERROR accepting client");
|
||||
}
|
||||
|
||||
printf("got a connection!\n");
|
||||
|
||||
// close sockets we opened
|
||||
close(newsockfd);
|
||||
close(sockfd);
|
||||
|
||||
// once connection is acquired, exit
|
||||
exit(0);
|
||||
}
|
||||
|
||||
int main()
|
||||
{
|
||||
wait_for_client();
|
||||
|
||||
std::cout << "P3\n" << WIDTH << ' ' << HEIGHT << "\n255\n";
|
||||
|
||||
hittable_list world = random_scene();
|
||||
|
|
29
telescope.md
29
telescope.md
|
@ -2,19 +2,20 @@ fantasy telescope idea
|
|||
|
||||
use rti1w as a base
|
||||
|
||||
server waits for connection
|
||||
client establishes connection
|
||||
client sends receiving port to server
|
||||
client application sends command to send image
|
||||
server receives imaging command
|
||||
server renders image
|
||||
server sends image data stream to client
|
||||
client application receives image
|
||||
client requests resend of lost packets
|
||||
client displays image
|
||||
client saves image to file
|
||||
server sends telemetry to client (what telemetry?)
|
||||
server compresses image before sending to client
|
||||
client specifies image parameters
|
||||
* [ ] move rendering out of main.cpp
|
||||
* [x] server waits for connection
|
||||
* [x] client establishes connection
|
||||
* [ ] client sends receiving port to server
|
||||
* [ ] client application sends command to send image
|
||||
* [ ] server receives imaging command
|
||||
* [ ] server renders image
|
||||
* [ ] server sends image data stream to client
|
||||
* [ ] client application receives image
|
||||
* [ ] client requests resend of lost packets
|
||||
* [ ] client displays image
|
||||
* [ ] client saves image to file
|
||||
* [ ] server sends telemetry to client (what telemetry?)
|
||||
* [ ] server compresses image before sending to client
|
||||
* [ ] client specifies image parameters
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue