не могу создать соединение между сервером и клиентом по tcp/ip на Linux Mint. Компилирую через gcc.Connect возвращает -1 и errno выдает ECONNREFUSED. До этого сервера писал только на винде используя winsock2. Сервер
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/signal.h>
#include <sys/wait.h>
#include <sys/resource.h>
#include <netinet/in.h>
#include <iostream>
#include <unistd.h>
#include <iomanip>
#include <string.h>
using namespace std;
int main()
{
int s,s2,bl;
s=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in local;
local.sin_port=htonl(7500);
local.sin_family=AF_INET;
local.sin_addr.s_addr=htonl(INADDR_ANY);
bl=bind(s,(struct sockaddr*)&local,sizeof(local));
cout<<"Listen\n";
bl=listen(s,5);
cout<<"Accept\n";
s2=accept(s,0,0);
send(s2,"HW",sizeof("HW"),0);
}
Клиент
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <iostream>
#include <unistd.h>
#include <iomanip>
#include <string.h>
using namespace std;
int main()
{
int s,rc;
s=socket(AF_INET,SOCK_STREAM,0);
struct sockaddr_in peer;
peer.sin_family=AF_INET;
peer.sin_port=htons(7500);
peer.sin_addr.s_addr=inet_addr("127.0.0.1");
cout<<"Connecting\n";
rc=connect(s,(struct sockaddr*)&peer,sizeof(peer));
switch (errno)
{
case EACCES:
fprintf(stdout, "EACCESS");
break;
case EPERM:
fprintf(stdout, "EPERM");
break;
case EADDRINUSE:
fprintf(stdout, "EADDRINUSE");
break;
case EAFNOSUPPORT:
fprintf(stdout, "EAFNOSUPPORT");
break;
case EAGAIN:
fprintf(stdout, "EAGAIN");
break;
case EALREADY:
fprintf(stdout, "EALREADY");
break;
case EBADF:
fprintf(stdout, "EBADF");
break;
case ECONNREFUSED:
fprintf(stdout, "ECONNREFUSED");
break;
case EFAULT:
fprintf(stdout, "EFAULT");
break;
case EINPROGRESS:
fprintf(stdout, "EINPROGRESS");
break;
case EINTR:
fprintf(stdout, "EINTR");
break;
case EISCONN:
fprintf(stdout, "EISCONN");
break;
case ENETUNREACH:
fprintf(stdout, "ENETUNREACH");
break;
case ENOTSOCK:
fprintf(stdout, "ENOTSOCK");
break;
case ETIMEDOUT:
fprintf(stdout, "ETIMEDOUT");
break;
default:
fprintf(stdout, "unknown error(%d)", errno);
break;
}
cout<<endl;
char choice[100];
char buf[100];
recv(s,buf,sizeof("HW"),0);
}
local.sin_port=htonl(7500);
Должно быть htons
, а не htonl
— в итоге сервер не тот порт слушает.
На будущее: советую освоить использование утилиты netstat
.
netstat -t4lp
сразу бы показало, что не так.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Первый вопрос: почему если не указать fixed значение вернется в экспоненциальной форме? Второй вопрос: почему если поставить fixed, то вернется...
Помогите понять почему в консоли ошибка Uncaught SyntaxError: Unexpected token '}'
Как сделать чтобы при нажатии на якорь, к ссылке добавлялся якорь типо https://123ru/#anchor ? И при нажатии каждого последующего изменялся