summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcashmere <cashmere@autistici.org>2026-06-24 15:56:55 +0200
committercashmere <cashmere@autistici.org>2026-06-24 15:56:55 +0200
commitc2e9c4e09db7e3ebfba9c925edcfd67e133fc0ec (patch)
tree8aad50074d469efe56cece39bbf2568ac6d2e2fb
parentf018cac578474840bb058c6a438426aa6ba44498 (diff)
downloadtelnet-c2e9c4e09db7e3ebfba9c925edcfd67e133fc0ec.tar.gz
src/main.c: add fn establish connection
-rw-r--r--src/main.c21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/main.c b/src/main.c
index edfe6b2..52a4a4a 100644
--- a/src/main.c
+++ b/src/main.c
@@ -4,11 +4,9 @@
#include <sys/socket.h>
#include <unistd.h>
-int main() {
- struct sockaddr_in addr;
- addr.sin_family = AF_INET; /* IPv4 */
- addr.sin_port = htons(8000); /* Port */
- addr.sin_addr.s_addr = INADDR_ANY; /* equals to 0.0.0.0 */
+// returns a socket file descriptor.
+// if connection could not be established, 1 gets returned
+int establish_connection(struct sockaddr_in addr) {
int sfd = socket(AF_INET, SOCK_STREAM, 0);
if (sfd == -1) {
perror("could not open socket");
@@ -26,7 +24,20 @@ int main() {
perror("could not listen");
return 1;
}
+ return sfd;
+}
+
+int main() {
+ struct sockaddr_in addr;
+ addr.sin_family = AF_INET; /* IPv4 */
+ addr.sin_port = htons(8000); /* Port */
+ addr.sin_addr.s_addr = INADDR_ANY; /* equals to 0.0.0.0 */
struct pollfd fds[256];
+ int sfd = establish_connection(addr);
+ if (sfd == 1) {
+ perror("could not establish connection");
+ return 1;
+ }
fds[0].fd = sfd; /* socket file descriptor */
fds[0].events = POLLIN; /* data to read */
nfds_t nfds = 1; /* non file descriptor. something with timeout */