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
如何使用套接字检查打开的端口 #包括 #包含//以退出 #包括 #包括//对于close(),read() #包括// #包含//用于套接字api #在中包含//用于结构sockaddr\u #包括//用于inet\u pton #定义最大值30 int ssfd//列名 国际关系//康夫 int serverlen; serveraddr中的结构sockaddr\u; void main() { int i=0,res; int startPortRange=0; int stopPortRange=65536; 对于(i=startPortRange;i_C_Sockets_Port - Fatal编程技术网

如何使用套接字检查打开的端口 #包括 #包含//以退出 #包括 #包括//对于close(),read() #包括// #包含//用于套接字api #在中包含//用于结构sockaddr\u #包括//用于inet\u pton #定义最大值30 int ssfd//列名 国际关系//康夫 int serverlen; serveraddr中的结构sockaddr\u; void main() { int i=0,res; int startPortRange=0; int stopPortRange=65536; 对于(i=startPortRange;i

如何使用套接字检查打开的端口 #包括 #包含//以退出 #包括 #包括//对于close(),read() #包括// #包含//用于套接字api #在中包含//用于结构sockaddr\u #包括//用于inet\u pton #定义最大值30 int ssfd//列名 国际关系//康夫 int serverlen; serveraddr中的结构sockaddr\u; void main() { int i=0,res; int startPortRange=0; int stopPortRange=65536; 对于(i=startPortRange;i,c,sockets,port,C,Sockets,Port,而不是 #include<stdio.h> #include<stdlib.h>// for exit #include<string.h> #include<unistd.h> //for close(),read() #include<sys/types.h>// #include<sys/socket.h> //for socket api's #include<netinet/in.h>//for str

而不是

#include<stdio.h>
#include<stdlib.h>// for exit
#include<string.h>
#include<unistd.h> //for close(),read()
#include<sys/types.h>//
#include<sys/socket.h> //for socket api's
#include<netinet/in.h>//for struct sockaddr_in
#include<arpa/inet.h>// for inet_pton

#define MAX 30

int ssfd;   //listenfd
int res; //connfd
int serverlen;
struct sockaddr_in serveraddr;

void main()
{
    int i=0,res;
    int startPortRange=0;  
    int stopPortRange=65536; 

    for(i=startPortRange; i<stopPortRange; i++)  
    {  
        ssfd=socket(AF_INET,SOCK_STREAM,0);
        if(ssfd==-1)
        {
            printf("\nSocket Creation Failed....");
        }

        serveraddr.sin_family=AF_INET;
        serveraddr.sin_addr.s_addr=inet_addr("127.0.0.1"); // inet_addr converts an IPV4 from dotted decimal string
        //to e.g(127.0.0.1) to its 32-bit network byte ordered binary value.    

        serveraddr.sin_port=i;

        serverlen=sizeof(serveraddr);

        res = bind(ssfd,(struct sockaddr*)&serveraddr,serverlen);

        if(res==-1)
        {
            printf("\nPort in Use : %d",i);
        }
        else
        {
            printf("\nPort not in use: %d",i); 
        }

        close(ssfd);
    }
}
你需要使用

serveraddr.sin_port=i;

因为inetaddr结构中的端口地址必须具有网络字节顺序,所以您应该绑定到0.0.0.0,而不是127.0.0.1,否则您只能找到可以绑定到17.0.0.1的端口,这不是您试图找到的。但是,当netstat已经存在时,为什么要这样做是一个谜。

我添加了这一行serveraddr.sin_port=htons(i);但它提供的输出与前面的相同
serveraddr.sin_port=htons(i);