Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ UDP迭代服务器C++;代码_C++_Sockets_Server_Udp - Fatal编程技术网

C++ UDP迭代服务器C++;代码

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

这是我的服务器。我想使用UDP创建迭代服务器,但它的客户端没有退出,第二个客户端接收消息。这不是一个迭代服务器。你能告诉我一个新客户等待第一个客户退出的方法吗

------------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;    
    }
}