HiveBrain v1.2.0
Get Started
← Back to all entries
patterncModerate

C Socket Part-1

Submitted by: @import:stackexchange-codereview··
0
Viewed 0 times
partsocketstackoverflow

Problem

In my ongoing attempts to become a better blog writer I have some written some more code that needs reviewing.

Full Source: https://github.com/Loki-Astari/Examples/tree/master/Version1

First Article: https://lokiastari.com/posts/SocketProgramminginC

This is a Simple Client Server implementation using RAW Sockets.
MakeFile

all:    client server
clean:
    rm -f *.o client server

CFLAGS      = -Wall -Wextra -pedantic -Werror

client: client.o
server: server.o


client.cpp

#include 
#include 
#include 
#include 
#include 
#include 

#define CLIENT_BUFFER_SIZE     1024

int main(int argc, char* argv[])
{
    if (argc != 3)
    {
        fprintf(stderr, "Usage: client  \n");
        exit(1);
    }

    int socketId = socket(PF_INET, SOCK_STREAM, 0);

    struct sockaddr_in serverAddr;
    socklen_t addrSize = sizeof(serverAddr);
    bzero((char*)&serverAddr, sizeof(serverAddr));
    serverAddr.sin_family       = AF_INET;
    serverAddr.sin_port         = htons(8080);
    serverAddr.sin_addr.s_addr  = inet_addr(argv[1]);
    connect(socketId, (struct sockaddr*)&serverAddr, addrSize);

    write(socketId, argv[2], strlen(argv[2]));

    shutdown(socketId, SHUT_WR);

    char    buffer[CLIENT_BUFFER_SIZE];
    size_t  get = read(socketId, buffer, CLIENT_BUFFER_SIZE - 1);

    buffer[get] = '\0';
    fprintf(stdout, "%s %s\n", "Response from server", buffer);

    close(socketId);
}


server.cpp

```
#include
#include
#include
#include
#include
#include

#define SERVER_BUFFER_SIZE 1024

int main()
{
int socketId = socket(PF_INET, SOCK_STREAM, 0);

struct sockaddr_in serverAddr;
bzero((char*)&serverAddr, sizeof(serverAddr));
serverAddr.sin_family = AF_INET;
serverAddr.sin_port = htons(8080);
serverAddr.sin_addr.s_addr = INADDR_ANY;
bind(socketId, (struct sockaddr *) &serverAddr, sizeof(serverAddr));

listen(socketId, 5);

int finished = 0;
while(!finished)
{

Solution

I can't resist saying this… the way you use a lot of whitespace to achieve your horizontal alignment, especially in server.cpp, is distracting and hinders readability.

I don't mind it so much when several lines have some relationship to each other. For example:

serverAddr.sin_family       = AF_INET;
serverAddr.sin_port         = htons(8080);
serverAddr.sin_addr.s_addr  = INADDR_ANY;


But for this? No, don't bother trying to horizontally align anything at all.

struct  sockaddr_storage    serverStorage;
socklen_t                   addr_size   = sizeof serverStorage;
int newSocket = accept(socketId, (struct sockaddr*)&serverStorage, &addr_size);

char        buffer[SERVER_BUFFER_SIZE];
int         get = read(newSocket, buffer, SERVER_BUFFER_SIZE - 1);

Code Snippets

serverAddr.sin_family       = AF_INET;
serverAddr.sin_port         = htons(8080);
serverAddr.sin_addr.s_addr  = INADDR_ANY;
struct  sockaddr_storage    serverStorage;
socklen_t                   addr_size   = sizeof serverStorage;
int newSocket = accept(socketId, (struct sockaddr*)&serverStorage, &addr_size);

char        buffer[SERVER_BUFFER_SIZE];
int         get = read(newSocket, buffer, SERVER_BUFFER_SIZE - 1);

Context

StackExchange Code Review Q#131136, answer score: 16

Revisions (0)

No revisions yet.