绑定服务器套接字时出错::地址已在使用中。UDP C编程

影网

我在创建第二个套接字时遇到问题

这是代码的一部分

int serverSock;
int clientSock ,newSock;
struct sockaddr_in clientInfo ;
struct sockaddr_in server;
struct addrinfo;
int serverPort;
int sockLength;
char destIP[MAXSIZE];
int destPort;

该函数专门在绑定中发生错误

int createSocket(int port){
    sockLength=sizeof(struct sockaddr_in); // get struct size
    if(( serverSock=socket(AF_INET,SOCK_DGRAM,0)) ==-1) // create the socket
        perror("\nError in Creating socket ");

    memset(&server,0, sizeof(server)); // initialize the socket information
    server.sin_family=AF_INET; // ipv4
    server.sin_port=htons(port); //server port
    server.sin_addr.s_addr=INADDR_ANY; //server IP
    bzero(&server.sin_zero,8);

    if ((bind(serverSock,(struct sockaddr *)&server,sizeof(server)))==-1) // bind the socket with the information
        perror("\nError In Binding server Socket: ");

}

void main(int args, char * argv[]){

    serverPort=atoi(argv[1]);
    createSocket(serverPort); // creating the main Server socket

    printf("%s","Server Is Wating For connections....\n");
    int chkRcv=1;
    struct packet pktToSend;
    struct frame rcvFrm ,frmToSend;
    int ports[]={25011,104002,110003,105004,100705}; // array of ports;
    int portsPtr=0;


    while(1){ // while connection is ok
    printf("Server is listening to %i \n",serverSock);
        if((chkRcv=recvfrom(serverSock ,&rcvFrm,sizeof(rcvFrm),0, (struct sockaddr *)&clientInfo, &sockLength))== 0){ // receive from client
            perror("Client Disconnected......\n");               
            //break;
        }
        strcpy(destIP,rcvFrm.sourceIP);//getClietn IP
        destPort=rcvFrm.pkt.sourcePort;//getClietn port

        char tempData[MAXSIZE];

        if(rcvFrm.type=='R'){
            sprintf(tempData,"%i",ports[portsPtr]);//get new port num
            portsPtr=portsPtr+1; // increment pointer
            pktToSend=createPkt(serverPort,destPort,tempData);
            frmToSend=createFrm(4,'A',0,sourceIP,destIP,pktToSend);

            if((sendto(serverSock,&frmToSend, sizeof(frmToSend),0,(struct sockaddr *)&clientInfo, sockLength))==-1){ //send ACK packet
                perror("\nerror in sending-1 CONF packer: ");
            }//send

            printf("ACK Sent \n");
            fork(); // Here I am creating a new socket to be used with the client and leave the main socket free for other clients
            printf("PORT %i: \n",ports[portsPtr-1]);
            createSocket(ports[portsPtr-1]); // error occurs when call this function. 

        }   

    }//while
}

因此,问题是当服务器接收if(rcvFrm.type=='R')(新客户端)时,我想创建一个用于与该客户端连接的新套接字,而将主套接字留给其他客户端使用。尝试创建新套接字时出现错误“绑定服务器套接字中的错误::地址已在使用中”

我正在使用fork(),因此它应该从代码创建一个副本并将其应用于其他内存位置。我正在尝试创建具有不同端口号的套接字。为什么我出现错误?

影网

我发现了问题

        fork(); // Here I am creating a new socket to be used with the client and leave the main socket free for other clients
        printf("PORT %i: \n",ports[portsPtr-1]);
        createSocket(ports[portsPtr-1])

在这种情况下,父级和子级都尝试在同一端口上创建新的套接字!

解决方案:

pid_t  pid;

pid = fork();
if (pid == 0) //child
 createSocket(ports[portsPtr-1]); 

> fork()向新创建的子进程返回零。

谢谢

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C 中的套接字编程,服务器代码出错

来自分类Dev

套接字编程:C语言中的UDP客户端-服务器

来自分类Dev

TCP-IP套接字C:尝试连接到服务器套接字时出现错误的地址错误

来自分类Dev

为什么在C语言的套接字编程中我们需要服务器本身的IP地址

来自分类Linux

Unix上的Boost UDP套接字问题-绑定:地址已在使用中

来自分类Dev

在套接字编程中,我在服务器端接收到用c编写代码的字符串时遇到错误

来自分类Dev

Ubuntu中的C ++ UDP套接字编程

来自分类Dev

C#中的TCP套接字服务器

来自分类Dev

C ++中的TCP服务器套接字打开失败

来自分类Dev

服务器在 C 套接字编程中无需等待读取客户端命令即可继续进行

来自分类Dev

有关C语言(Linux)中套接字服务器客户端编程中accept()的问题

来自分类Dev

服务器回显时套接字编程错误

来自分类Dev

(C套接字编程)将服务器的send()调用与结束于同一客户端recv()缓冲区中的服务器分开

来自分类Dev

使用颤振中的套接字编程将图像发送到服务器

来自分类Dev

将Android客户端连接到NodeJS中的套接字服务器时出错

来自分类Dev

在打字稿上使用 socket.io 创建套接字服务器时出错

来自分类Dev

C 中带有 poll() 的 UDP 套接字服务器

来自分类Dev

C (UDP) 中的套接字服务器不接收数据包。怎么做?

来自分类Dev

如何在C ++中使用套接字(UDP)在LAN上查找服务器

来自分类Dev

地址已在使用中-在Cloud9 IDE中启动服务器时绑定(2)

来自分类Dev

如何使用C#窗口发现侦听端口XX的服务器套接字的IP地址

来自分类Dev

套接字错误:地址已在使用中

来自分类Dev

套接字EADDRINUSE(地址已在使用中)

来自分类Python

Python:绑定套接字:“地址已在使用中”

来自分类Dev

启动WildFly服务器时出错(地址已在使用中)

来自分类Dev

启动Redis服务器时出错:“地址已在使用中”

来自分类Dev

当关闭端口时,使用套接字检查远程服务器上打开的端口是否挂起,C

来自分类Dev

C#获取UDP服务器套接字从其接收数据的客户端的IP地址

来自分类Dev

在套接字编程中无法从服务器向客户端发送int

Related 相关文章

  1. 1

    C 中的套接字编程,服务器代码出错

  2. 2

    套接字编程:C语言中的UDP客户端-服务器

  3. 3

    TCP-IP套接字C:尝试连接到服务器套接字时出现错误的地址错误

  4. 4

    为什么在C语言的套接字编程中我们需要服务器本身的IP地址

  5. 5

    Unix上的Boost UDP套接字问题-绑定:地址已在使用中

  6. 6

    在套接字编程中,我在服务器端接收到用c编写代码的字符串时遇到错误

  7. 7

    Ubuntu中的C ++ UDP套接字编程

  8. 8

    C#中的TCP套接字服务器

  9. 9

    C ++中的TCP服务器套接字打开失败

  10. 10

    服务器在 C 套接字编程中无需等待读取客户端命令即可继续进行

  11. 11

    有关C语言(Linux)中套接字服务器客户端编程中accept()的问题

  12. 12

    服务器回显时套接字编程错误

  13. 13

    (C套接字编程)将服务器的send()调用与结束于同一客户端recv()缓冲区中的服务器分开

  14. 14

    使用颤振中的套接字编程将图像发送到服务器

  15. 15

    将Android客户端连接到NodeJS中的套接字服务器时出错

  16. 16

    在打字稿上使用 socket.io 创建套接字服务器时出错

  17. 17

    C 中带有 poll() 的 UDP 套接字服务器

  18. 18

    C (UDP) 中的套接字服务器不接收数据包。怎么做?

  19. 19

    如何在C ++中使用套接字(UDP)在LAN上查找服务器

  20. 20

    地址已在使用中-在Cloud9 IDE中启动服务器时绑定(2)

  21. 21

    如何使用C#窗口发现侦听端口XX的服务器套接字的IP地址

  22. 22

    套接字错误:地址已在使用中

  23. 23

    套接字EADDRINUSE(地址已在使用中)

  24. 24

    Python:绑定套接字:“地址已在使用中”

  25. 25

    启动WildFly服务器时出错(地址已在使用中)

  26. 26

    启动Redis服务器时出错:“地址已在使用中”

  27. 27

    当关闭端口时,使用套接字检查远程服务器上打开的端口是否挂起,C

  28. 28

    C#获取UDP服务器套接字从其接收数据的客户端的IP地址

  29. 29

    在套接字编程中无法从服务器向客户端发送int

热门标签

归档