Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions chat/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
all: server client

sockethelper.o:
gcc -c socketHelper.c -o sockethelper.o

server: sockethelper.o
gcc sockethelper.o server.c -o server

client: sockethelper.o
gcc sockethelper.o client.c -o client


clean:
rm -rf sockethelper.o client server
14 changes: 14 additions & 0 deletions chat/hofi1/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
all: server client

sockethelper.o:
gcc -c socketHelper.c -o sockethelper.o

server: sockethelper.o
gcc sockethelper.o server.c -o server

client: sockethelper.o
gcc sockethelper.o client.c -o client


clean:
rm -rf sockethelper.o client server
66 changes: 66 additions & 0 deletions chat/hofi1/client.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
//
// Created by joachim on 10/6/24.
//

#include <netinet/in.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include "socketHelper.h"

int main() {
int socketFd;
struct sockaddr_in *address;

// Get a socket descriptor
socketFd = getSocketFd();
if (socketFd == -1) {
perror("Failed to get socket descriptor");
return 1;
}

// Create IPv4 address
address = createIPv4Address("127.0.0.1", 2000);
if (address == NULL) {
perror("Failed to create address");
close(socketFd); // Close the socket on error
return 1;
}

// Connect to the server
int result = connect(socketFd, (struct sockaddr*) address, sizeof(*address));
if (result == -1) {
perror("Failed to connect");
close(socketFd);
return 1;
}

char *message = "GET \\ HTTP/1.1\r\nHost:google.com\r\n\r\n";

// Send the message
if (send(socketFd, message, strlen(message), 0) == -1) {
perror("Failed to send message");
close(socketFd);
return 1;
}

// Receive response
char buffer[4096]; // Larger buffer to handle potentially large responses
int bytesReceived = recv(socketFd, buffer, sizeof(buffer) - 1, 0);
if (bytesReceived == -1) {
perror("Failed to receive data");
close(socketFd);
return 1;
}

// Ensure null termination (in case the response isn't already)
buffer[bytesReceived] = '\0';

// Print the response
printf("Response was:\n%s", buffer);

// Close the socket
close(socketFd);

return 0;
}
46 changes: 46 additions & 0 deletions chat/hofi1/server.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
//
// Created by joachim on 10/6/24.
//

#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <unistd.h>
#include "./socketHelper.h"

#define handle_error(msg) \
do { perror(msg); exit(EXIT_FAILURE); } while (0)

int main() {
int serverFD = getSocketFd();
struct sockaddr_in *srvAddress = createIPv4Address("127.0.0.1", 7585);

// printf("Port: %d\n", srvAddress->sin_port);

if (bind(serverFD, (struct sockaddr*)&srvAddress, sizeof(srvAddress))) {
handle_error("bind");
}
/* if (result == 0)
printf("Socket was bound successfully\n");
*/

int listenResult = listen(serverFD, 10);
if (listenResult == 0)
printf("Listening was bound successfully\n");

struct sockaddr_in clientAddress;
uint clientAddressSize = sizeof clientAddress;
int clientSocketFD = accept(serverFD, (struct sockaddr *) &clientAddress, &clientAddressSize);

// Receive response
char buffer[4096]; // Larger buffer to handle potentially large responses
long bytesReceived = recv(clientSocketFD, buffer, sizeof(buffer) - 1, 0);
if (bytesReceived == -1) {
perror("Failed to receive data");
close(clientSocketFD);
return 1;
}

return 0;
}
26 changes: 26 additions & 0 deletions chat/hofi1/socketHelper.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
#include "socketHelper.h"

#include <string.h>
#include <arpa/inet.h>
#include <malloc.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

struct sockaddr_in* createIPv4Address (char *ip, int port) {
printf("Passed port: %d\n", port);
struct sockaddr_in *address = malloc(sizeof (struct sockaddr_in));
address->sin_family = AF_INET;
address->sin_port = htons(port);
if (strlen(ip) == 0)
address->sin_addr.s_addr = INADDR_ANY;
else
address->sin_addr.s_addr = htonl(INADDR_ANY);
//inet_pton(AF_INET, ip, &address->sin_addr.s_addr);
printf("Final port: %d\n", address->sin_port);
return address;
}

int getSocketFd() { return socket(AF_INET, SOCK_STREAM, 0); }
7 changes: 7 additions & 0 deletions chat/hofi1/socketHelper.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#ifndef CHAT_SOCKETHELPER_H
#define CHAT_SOCKETHELPER_H

struct sockaddr_in* createIPv4Address (char *ip, int port);
int getSocketFd();

#endif //CHAT_SOCKETHELPER_H
14 changes: 14 additions & 0 deletions chat/hofi2/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
all: server client

sockethelper.o:
gcc -c socketHelper.c -o sockethelper.o

server: sockethelper.o
gcc sockethelper.o server.c -o server

client: sockethelper.o
gcc sockethelper.o client.c -o client


clean:
rm -rf sockethelper.o client server
66 changes: 66 additions & 0 deletions chat/hofi2/client.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
//
// Created by joachim on 10/6/24.
//

#include <netinet/in.h>
#include <string.h>
#include <stdio.h>
#include <unistd.h>
#include "socketHelper.h"

int main() {
int socketFd;
struct sockaddr_in *address;

// Get a socket descriptor
socketFd = getSocketFd();
if (socketFd == -1) {
perror("Failed to get socket descriptor");
return 1;
}

// Create IPv4 address
address = createIPv4Address("127.0.0.1", 7585);
if (address == NULL) {
perror("Failed to create address");
close(socketFd); // Close the socket on error
return 1;
}

// Connect to the server
int result = connect(socketFd, (struct sockaddr*) address, sizeof(*address));
if (result == -1) {
perror("Failed to connect");
close(socketFd);
return 1;
}

char *message = "GET \\ HTTP/1.1\r\nHost:google.com\r\n\r\n";

// Send the message
if (send(socketFd, message, strlen(message), 0) == -1) {
perror("Failed to send message");
close(socketFd);
return 1;
}

// Receive response
char buffer[4096]; // Larger buffer to handle potentially large responses
int bytesReceived = recv(socketFd, buffer, sizeof(buffer) - 1, 0);
if (bytesReceived == -1) {
perror("Failed to receive data");
close(socketFd);
return 1;
}

// Ensure null termination (in case the response isn't already)
buffer[bytesReceived] = '\0';

// Print the response
printf("Response was:\n%s", buffer);

// Close the socket
close(socketFd);

return 0;
}
59 changes: 59 additions & 0 deletions chat/hofi2/server.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
//
// Created by joachim on 10/6/24.
//

#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <unistd.h>
#include "./socketHelper.h"
#include <arpa/inet.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>



#define handle_error(msg) \
do { perror(msg); exit(EXIT_FAILURE); } while (0)

int main() {
int serverFD = socket(AF_INET, SOCK_STREAM, 0);
//struct sockaddr_in *srvAddress = createIPv4Address("127.0.0.1", 7585);
struct sockaddr_in srvAddress;
//memset(&srvAddress, '0', sizeof(srvAddress));

srvAddress.sin_family = AF_INET;
srvAddress.sin_addr.s_addr = htonl(INADDR_ANY);
srvAddress.sin_port = htons(7585);

// printf("Port: %d\n", srvAddress->sin_port);

if (bind(serverFD, (struct sockaddr*)&srvAddress, sizeof(srvAddress))) {
handle_error("bind");
}
/* if (result == 0)
printf("Socket was bound successfully\n");
*/

int listenResult = listen(serverFD, 10);
if (listenResult == 0)
printf("Listening was bound successfully\n");

struct sockaddr_in clientAddress;
uint clientAddressSize = sizeof clientAddress;
int clientSocketFD = accept(serverFD, (struct sockaddr *) &clientAddress, &clientAddressSize);

// Receive response
char buffer[4096]; // Larger buffer to handle potentially large responses
long bytesReceived = recv(clientSocketFD, buffer, sizeof(buffer) - 1, 0);
if (bytesReceived == -1) {
perror("Failed to receive data");
close(clientSocketFD);
return 1;
}

return 0;
}
22 changes: 22 additions & 0 deletions chat/hofi2/socketHelper.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
#include "socketHelper.h"

#include <string.h>
#include <arpa/inet.h>
#include <malloc.h>
#include <netinet/in.h>
#include <sys/socket.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

struct sockaddr_in* createIPv4Address (char *ip, int port) {
printf("Passed port: %d\n", port);
struct sockaddr_in *address = malloc(sizeof (struct sockaddr_in));
address->sin_family = AF_INET;
address->sin_port = htons(port);
address->sin_addr.s_addr = htonl(INADDR_ANY);
printf("Final port: %d\n", address->sin_port);
return address;
}

int getSocketFd() { return socket(AF_INET, SOCK_STREAM, 0); }
7 changes: 7 additions & 0 deletions chat/hofi2/socketHelper.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
#ifndef CHAT_SOCKETHELPER_H
#define CHAT_SOCKETHELPER_H

struct sockaddr_in* createIPv4Address (char *ip, int port);
int getSocketFd();

#endif //CHAT_SOCKETHELPER_H
10 changes: 10 additions & 0 deletions chat/mapeexample/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
all: client server

client:
gcc client.c -o client

server:
gcc server.c -o server

clean:
rm -f client server
Loading