Compare commits
	
		
			4 Commits
		
	
	
		
			4ccba24017
			...
			f9aef71a94
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| f9aef71a94 | |||
| 5920133571 | |||
| ebbd20a5d1 | |||
| c39a2cea91 | 
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -2,7 +2,7 @@ | ||||
| image.ppm | ||||
| 
 | ||||
| # binary | ||||
| flark | ||||
| snoopy | ||||
| 
 | ||||
| # CMake | ||||
| # https://github.com/github/gitignore/blob/master/CMake.gitignore | ||||
|  | ||||
| @ -1,11 +1,11 @@ | ||||
| cmake_minimum_required(VERSION 3.10) | ||||
| 
 | ||||
| project(flark) | ||||
| project(snoopy) | ||||
| 
 | ||||
| file(GLOB flark_src | ||||
| file(GLOB snoopy_src | ||||
|     "src/*.h" | ||||
|     "src/*.cpp" | ||||
| ) | ||||
| 
 | ||||
| add_executable(flark ${flark_src}) | ||||
| add_executable(snoopy ${snoopy_src}) | ||||
| 
 | ||||
|  | ||||
							
								
								
									
										12
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								README.md
									
									
									
									
									
								
							| @ -1,11 +1,9 @@ | ||||
| # Flark | ||||
| # snoopy | ||||
| 
 | ||||
| Ray tracing rendering experiments | ||||
| Networked fantasy telescope | ||||
| 
 | ||||
| https://raytracing.github.io/ | ||||
| Originally based on https://raytracing.github.io/ | ||||
| 
 | ||||
| Produced PPM images can be converted to PNG with `imagemagick`: | ||||
| Original repository at https://github.com/ktyldev/flark | ||||
| 
 | ||||
| ``` | ||||
| convert image.ppm image.png | ||||
| ``` | ||||
| https://www.linuxhowtos.org/C_C++/socket.htm | ||||
|  | ||||
							
								
								
									
										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(); | ||||
|  | ||||
							
								
								
									
										21
									
								
								telescope.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								telescope.md
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,21 @@ | ||||
| fantasy telescope idea | ||||
| 
 | ||||
| use rti1w as a base | ||||
| 
 | ||||
| * [ ] 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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user