C++ UDP迭代服务器C++;代码
这是我的服务器。我想使用UDP创建迭代服务器,但它的客户端没有退出,第二个客户端接收消息。这不是一个迭代服务器。你能告诉我一个新客户等待第一个客户退出的方法吗 ------------UDP迭代服务器----------C++ UDP迭代服务器C++;代码,c++,sockets,server,udp,C++,Sockets,Server,Udp,这是我的服务器。我想使用UDP创建迭代服务器,但它的客户端没有退出,第二个客户端接收消息。这不是一个迭代服务器。你能告诉我一个新客户等待第一个客户退出的方法吗 ------------UDP迭代服务器---------- #包括 #包括“config.h” #包括 #包括“unp.h” 使用名称空间std; int main(){ int sockfd=套接字(AF_INET,SOCK_DGRAM,0); 如果(sockfd==-1){ 你说的迭代服务器是什么意思?缩进发布的代码是公平的。udp
#包括
#包括“config.h”
#包括
#包括“unp.h”
使用名称空间std;
int main(){
int sockfd=套接字(AF_INET,SOCK_DGRAM,0);
如果(sockfd==-1){
你说的迭代服务器是什么意思?缩进发布的代码是公平的。udp是无连接的,所以你不能序列化客户端…所以使用TCP。如果你想坚持使用udp,你就要自己尝试重新创建一些已经存在的东西,没有明显的原因。这就像在你有锤子的时候想用死鱼敲钉子一样哦,你。只有你知道如何判断“客户退出”因此,如果您想使用UDP,请以某种方式实现它。我们在这方面帮不了您。您不能用UDP序列化客户端,因为它的连接较少,所以服务器接收的两个数据包之间没有链接。您可能会认为通过IP或类似的方式进行过滤,但这样做并不能保证这一点。使用TCP。您说的迭代是什么意思ive服务器?缩进发布的代码是公平的。udp是无连接的,因此您无法序列化客户端…所以请使用TCP。如果您想坚持使用udp,您就要自己尝试重新创建一些已经存在的东西,而没有明显的原因。这就像当您身边有锤子时,想用死鱼敲钉子一样。只有您知道如何使用udp当“客户端退出”时,我们将以某种方式实现它,如果您想使用UDP。我们在这方面无法帮助您。您不能用UDP序列化客户端,因为它的连接较少,因此服务器接收到的两个数据包之间没有链接。您可能认为通过IP或类似的方式进行过滤,但这样做并不能保证这一点。使用TCP。
#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;
}
}