Передача данных между клиентом / сервером через сокеты - PullRequest
0 голосов
/ 08 июля 2020

Я прохожу стажировку в компании по управлению автопарком, которая использует устройства слежения за автомобилями устройства для определения водителей (которые работают для крупных корпораций) через GPS .

Мой проект заключается в интеграции датчиков Bluetooth ( температуры и влажности , в основном) с этими устройствами.

I не было проблем с интеграцией всех устройств (поскольку у нас есть программное обеспечение , которое в основном делает все за нас, все, что нам нужно сделать, это правильно его настроить). Это программное обеспечение отправляет информацию об устройстве (координаты, полученные значения ввода / вывода и т. Д. c.) На сервер и порт, определенный нами.

Хотя мой проект состоит в основном на аппаратном обеспечении , я хотел бы разработать простой код для создания более надежного решения (это также помогает мне получить лучшую оценку, поскольку я продолжаю развивать свой проект).

Моя идея заключалась в том, чтобы создать код (который будет применяться на сервере компании), который будет прослушивать информацию и сохранять ее в / с помощью сокетов. Насколько я помню, мне нужно установить sh соединение с помощью сокетов, прослушать информацию, принять ее и затем сохранить.

Вот что у меня есть на данный момент:

// Server side C/C++ program to demonstrate Socket programming 

#include <unistd.h> 
#include <stdio.h> 
#include <sys/socket.h> 
#include <stdlib.h> 
#include <netinet/in.h> 
#include <string.h> 
#define PORT 6027

int main (int argc, char const *argv[]) {
int server_fd, new_socket, valread;
struct sockaddr_in address;
int opt = 1;
int addrlen = sizeof(address);
char buffer[1024] = {0};

// Creating socket file descriptor

if ((server_fd = socket(AF_INET, SOCK_DGRAM, 0)) == 0) {
    perror("socket failed");
    exit(EXIT_FAILURE);
}

// Force attach socket to PORT 6027

if (setsockopt(server_fd, SOL_SOCKET, SO_REUSEADDR | SO_REUSEPORT, &opt, sizeof(opt))) {
    perror("setsockopt");
    exit(EXIT_FAILURE);
}

address.sin_family = AF_INET; 
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons( PORT ); 

if (bind(server_fd, (struct sockaddr *)&address, sizeof(address))<0) {
    perror("bind failed"); 
    exit(EXIT_FAILURE); 
}

if (listen(server_fd, 3) < 0) {
    perror("listen"); 
    exit(EXIT_FAILURE);
}

if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0) {
    perror("accept"); 
    exit(EXIT_FAILURE);
}

valread = read(new_socket, buffer, 1024); 
printf("%s\n",buffer);

Я посетил этот веб-сайт, чтобы выполнить некоторые инструкции по созданию кода на стороне сервера. Хотелось бы услышать, если что-то не хватает / не так и как это исправить!

...