сокеты — UDP итеративный сервер C ++ код

Это мой сервер. Я хочу сделать итеративный сервер, используя UDP, но его клиент не выходит, а второй получает сообщение. Это не итеративный сервер. Можете ли вы сказать мне способ, чтобы новый клиент ждал, пока первый клиент не выйдет?

————UDP ITERATIVE SERVER ———-

#include <iostream>
#include "config.h"#include <arpa/inet.h>
#include "unp.h"using namespace std;
int main() {
int sockfd=socket(AF_INET,SOCK_DGRAM,0);
if (sockfd==-1) {
cout<<"ERROR WHILE CREATING SOCKET"<<endl;
exit(0);
}
else {
cout<<"SOCKET CREATED SUCCESSFULLY"<<endl;
}
struct sockaddr_in server;
server.sin_port=htons(4444);
server.sin_family=AF_INET;
memset(&(server.sin_zero),'\0',8);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
int trybind=bind(sockfd,(struct sockaddr*)&server,sizeof(struct sockaddr));
if (trybind==-1) {
cout<<"ERROR WHILE BINDING ..."<<endl;
exit(0);
}
char msg[100],tosend[100];

if (trybind==0) {
cout<<"binded successfully"<<endl;}
while(1) {
struct sockaddr_in client;
socklen_t sizee=sizeof(client);
while(recvfrom(sockfd,msg,100,0,(struct sockaddr*)&client,&sizee)) {
cout<<"CLIENT : "<<msg<<endl;
cout<<"[CLIENT's PORT NUMBER :]"<<htons(client.sin_port)<<endl ;
char* clientip[100];
//socklen_t sizE=sizeof(client);
//clientip=inet_ntop(AF_INET, &(client.sin_addr), clientip, &sizee);

cout<<"[CLIENT's IP Address  :] "<<inet_ntoa(client.sin_addr)<<endl;
if (strcmp(msg,"quit")!=0) {
cout<<"SERVER :";
cin.getline(tosend,100);
cout<<endl;
int sen=sendto(sockfd,tosend,100,0,(struct sockaddr*)&client,sizee);
}
}
}
}
}

************* клиент ***********

#include <iostream>
#include "config.h"#include "unp.h"using namespace std;
int main() {
int sockfd=socket(AF_INET,SOCK_DGRAM,0);
if(sockfd==-1) {
cout<<"ERROR WHILE CREATING SOCKET"<<endl;
exit(0);
}
else {
cout<<"SOCKET CREATED SUCCESSFULLY"<<endl;
}
struct sockaddr_in server;
server.sin_port=htons(4444);
server.sin_family=AF_INET;
memset(&(server.sin_zero),'\0',8);
server.sin_addr.s_addr=inet_addr("127.0.0.1");
while(1) {
char msg[100],tosend[100];
cout<<"CLIENT:";
cin.getline(tosend,100);
cout<<endl;
if (strcmp(tosend,"quit")==0) {
cout<<"quiting"<<endl;
exit(0);
}
socklen_t sizee=sizeof(server);
int sen=sendto(sockfd,tosend,100,0,(struct sockaddr*)&server,sizee);
//struct sockaddr_in client;
int rec=recvfrom(sockfd,msg,100,0,(struct sockaddr*)&server,&sizee);
cout<<"SERVER : "<<msg<<endl;
}
}

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector