код сервера
#include <iostream>
#include <cstring>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <unistd.h>
#include <arpa/inet.h>
using namespace std;
int main(int argc, char *argv[])
{
char *port;
int port_atoi;
char s1[] = "-p";
int k = strcmp(s1, argv[1]);
if (k == 0 && argc==3)
{
port = argv[2];
port_atoi = atoi(port);
}
else
{
cout << "Usage : server -p [port]" << endl;
return 1;
}
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
addr.sin_port = htons(port_atoi);
addr.sin_family = AF_INET;
inet_pton(AF_INET, "192.168.0.60", &(addr.sin_addr));
if (bind(sockfd, (struct sockaddr *)&addr, sizeof(addr)) < 0)
{
cout << "error : bind" << endl;
exit(2);
}
int listener = listen(sockfd, 1);
if(listener < 0)
{
cout<<"error : listen "<<endl;
exit(3);
}
int incoming;
int sock;
char buf[1024];
char hello[] = "hello client";
while(1)
{
sock = accept(sockfd, NULL, NULL);
if(sock)
{cout<<"connection"<<endl;}
recv(sock, buf , sizeof(buf), 0 );
send(sock, hello, sizeof(hello), 0);
cout << buf << endl;
close(sock);
}
return 0;
}
код клиента
#include <iostream>
#include <cstring>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <unistd.h>
#include <arpa/inet.h>
using namespace std;
struct Client
{
int key;
const char *value;
};
int main(int argc, char *argv[])
{
Client kli;
kli.key = 1;
kli.value = "Hard_Disk";
int sockfd = socket(AF_INET, SOCK_STREAM, 0);
struct sockaddr_in addr;
addr.sin_family = AF_INET;
addr.sin_port = htons(3000);
inet_pton(AF_INET, "192.168.0.60", &(addr.sin_addr));
if(connect(sockfd, (struct sockaddr*)& addr, sizeof(addr)) < 0)
{
cout << "error : connection" << endl;
exit(1);
}
char buf[1024];
char hello[] = "hello server";
send(sockfd, hello, sizeof(hello), 0);
recv(sockfd, buf, sizeof(buf), 0);
close(sockfd);
cout<<buf<<endl;
return 0;
}
Как в такой ситуации лучше всего передать структуру? Нашел,что можно решить вопрос с помощью boost.asio,json,xml, но по докам так и не дошло как это делать.Больше интересует самый простой способ,чтобы понять суть т.к сам новичок.
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Доброго времени суток всем! Нужно в введённом пользователем массиве отсортировать числа так, чтобы сначала шли чётные числа по возрастанию,...
Как можно сделать так,дабы символ в консольке считывался сразу после ввода,без нажатия Enter?Не хочу пользоваться _getch,ибо приходится подключать...
Want to improve this question? Update the question so it's on-topic for Stack Overflow на русском