Я не могу отправить данные на сервер c ++ 11 - PullRequest
0 голосов
/ 12 апреля 2019

Я новичок на уровне программирования сокетов, поэтому я обнаружил некоторые проблемы, которые могут быть простыми.Я пытался отправить простое сообщение с клиента на сервер, но команда send return (-1), поэтому сообщение не получено сервером.

Кроме того, у меня та же проблема с кодом сервера и командой получателя.return (-1).

Ниже приведен код моего клиента:

bool ClientSock() {
int sock;
struct sockaddr_in address;

sock = socket(AF_INET, SOCK_STREAM, 0);
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_family = AF_INET;
address.sin_port = htons(10102);



if (connect(sock, (struct sockaddr*) &address, sizeof (address)) < 0) {
    cout << "connect failed. Error \n";
    return 0 ;
} else
    return 1;
}

void SendComm() {

long ok;
    char MESSAGE [2000];
    string msg;
    cout << "enter message:\t";
    cin>> msg;
    const char * s = msg.c_str();
    int sock;
    ok = send(sock, s, 1024, 0);`enter code here`
    if ( send(sock,s,1024,0)< 0){//this is the problem
    std::cout << "you can not send the message";
}
    else{
    ok = recv(sock, MESSAGE, sizeof (MESSAGE), 0);
    string reply;
    reply = MESSAGE;
    cout << "server says:_t" << reply << endl;
}
}

int main() {
if (ClientSock()==1){
     SendComm();
}
else 
    std::cout << "error";

 }

Это код моего сервера:

bool initialize() {
int conSock;
int ListenSock;
socklen_t addrsize;
struct sockaddr_in address;
addrsize = sizeof (address);

conSock = socket(AF_INET, SOCK_STREAM, 0);
address.sin_addr.s_addr = inet_addr("127.0.0.1");
address.sin_family = AF_INET;
address.sin_port = htons(10102);
ListenSock = socket(AF_INET, SOCK_STREAM, 0);
bind(ListenSock, (sockaddr *) & address, sizeof (address));
listen(ListenSock, SOMAXCONN);

std::cout << "server waiting for connexion\n\n ";


if (conSock = accept(ListenSock, (struct sockaddr *) &address, &addrsize) < 0) {
    cout << "connect failed. Error";
    return 0;
} else
    return 1;
}

void Communicate() {

int conSock;
int ListenSock;
struct sockaddr_in address;
socklen_t addrsize;

long ok;
char MESSAGE[2000];
ok = recv(conSock, MESSAGE, sizeof (MESSAGE), 0);
if (recv(conSock, MESSAGE, sizeof (MESSAGE), 0)< 0){
    std:: cout << "No message" ;  
}
else{
string msg;
msg = MESSAGE;
cout << " client says:\t" << msg << endl;
string reply;
cout << "enter reply:\t";
cin>> reply;
const char* s = reply.c_str();
ok = send(conSock, s, 1024, 0);
}}

int main() {

if (initialize() == 1) {
   Communicate();

} else
    std::cout << "error ";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...