Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.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 当客户端请求连接时,服务器不接受连接_C_Sockets - Fatal编程技术网

C 当客户端请求连接时,服务器不接受连接

C 当客户端请求连接时,服务器不接受连接,c,sockets,C,Sockets,我的服务器不接受客户端发送的连接请求,客户端未收到任何信息。当客户端请求连接时,我的服务器将关闭。 我的代码如下: 服务器代码: *#include<sys/socket.h> #include<netinet/in.h> #include<stdio.h> #include<sys/types.h> #include<string.h> int main() { int sock,bnd,con,lis,size,clilen

我的服务器不接受客户端发送的连接请求,客户端未收到任何信息。当客户端请求连接时,我的服务器将关闭。 我的代码如下: 服务器代码:

*#include<sys/socket.h>
#include<netinet/in.h>
#include<stdio.h>
#include<sys/types.h>
#include<string.h>
int main()
{
    int sock,bnd,con,lis,size,clilen;
    char *msg="WELCOME!!!!!";
    struct sockaddr_in sockadd,cliadd;
    //Socket Created.....
    sock=socket(AF_INET,SOCK_STREAM,0);
    if(sock!=-1)
    printf("socket created");
    else
    printf("Not created");

        // defining  Address of sockets
    sockadd.sin_family=AF_INET;
    sockadd.sin_port=htons(5001);
    sockadd.sin_addr.s_addr=htonl(INADDR_ANY);
    bnd=bind(sock,(struct sockaddr *) &sockadd,sizeof(sockadd));
    if(bnd==-1)
    printf("NOT BOUND");
    else
    printf("BOUND");

    lis=listen(sock,10);
    if(lis!=-1)
    printf("listning");
    else
    printf("not listening");
    printf("\nWaiting for connection at %s port no %d\n",inet_ntoa(sockadd.sin_addr),ntohs(sockadd.sin_port));
    while(1)
    {
        clilen=sizeof(cliadd);
        con=accept(sock,(struct sockaddr *) &cliadd, &clilen);
        if(con==-1)
        printf("connected not");
        else
        printf("conneted");
        size=send(sock,msg,sizeof(msg),0);
        if(size==-1)
        printf("not sent");
        else
        printf("BYTES SENT: %d",size);
        close(con);
        sleep(2);
    }
    return(0);*
*#包括
#包括
#包括
#包括
#包括
int main()
{
int sock、bnd、con、lis、尺寸、clilen;
char*msg=“欢迎!”;
sockadd、cliadd中的结构sockaddr_;
//已创建套接字。。。。。
sock=socket(AF\u INET,sock\u STREAM,0);
如果(袜子!=-1)
printf(“创建的套接字”);
其他的
printf(“未创建”);
//定义套接字的地址
sockadd.sin_family=AF_INET;
sockadd.sin_port=htons(5001);
sockadd.sin_addr.s_addr=htonl(INADDR_ANY);
bnd=bind(sock,(struct sockaddr*)和sockadd,sizeof(sockadd));
如果(bnd==-1)
printf(“不受约束”);
其他的
printf(“绑定”);
lis=倾听(sock,10);
如果(lis!=-1)
printf(“上市”);
其他的
printf(“不倾听”);
printf(“\n正在等待在%s端口号%d\n的连接”,inet_ntoa(sockadd.sin_addr),ntohs(sockadd.sin_端口));
而(1)
{
clilen=sizeof(cliadd);
con=accept(sock,(struct sockaddr*)和cliadd,&clilen);
如果(con==-1)
printf(“非关联”);
其他的
printf(“连接”);
大小=发送(sock,msg,sizeof(msg),0);
如果(大小==-1)
printf(“未发送”);
其他的
printf(“发送的字节数:%d”,大小);
关闭(con);
睡眠(2);
}
返回(0)*
客户端代码为:

    int sock,bnd,con,lis,size;
    char msg[35];
    struct sockaddr_in sockadd;
    //Socket Created.....
    sock=socket(AF_INET,SOCK_STREAM,0);
    if(sock!=-1)
    printf("socket created");
    else
    printf("Not created");
    //return(0);        
        // defining  Address of sockets
    sockadd.sin_family=AF_INET;
    sockadd.sin_port=htons(5001);
    sockadd.sin_addr.s_addr=inet_addr("10.3.5.172");
    /*puts(sockadd.sin_family);
    puts(sockadd.sin_port); 
    puts(sockadd.sin_addr.s_addr);      
    if(inet_pton(AF_INET, argv[1], &sockadd.sin_addr)<=0)
       {
         printf("\n inet_pton error occured\n");
            return 1;
        } */
    con=connect(sock, (struct sockaddr *)&sockadd, sizeof(sockadd)) ;
    if(con==-1)
        {
        printf("\n Error : Connect Failed \n");
             return 1;
        } 
    else
    printf("successful");
    size=recv(sock,msg,sizeof(msg),0);
    printf("msg recieved:%s",msg);
    printf("bytes recieved:%d",size);
}*
int sock、bnd、con、lis、size;
char-msg[35];
sockadd中的结构sockaddr_;
//已创建套接字。。。。。
sock=socket(AF\u INET,sock\u STREAM,0);
如果(袜子!=-1)
printf(“创建的套接字”);
其他的
printf(“未创建”);
//返回(0);
//定义套接字的地址
sockadd.sin_family=AF_INET;
sockadd.sin_port=htons(5001);
sockadd.sin_addr.s_addr=inet_addr(“10.3.5.172”);
/*puts(sockadd.sin_家族);
puts(sockadd.sin_端口);
看跌期权(sockadd.sin_addr.s_addr);

如果(inet\u pton(AF\u inet,argv[1],&sockadd.sin\u addr)您正试图在服务器套接字上发送

  size=send(sock,msg,sizeof(msg),0); // ERROR, this is a server socket!
改为尝试在新连接上发送:

  size=send(con,msg,sizeof(msg),0);

看起来没问题。你能从本地主机连接吗?你能做一个
tcpdump
并找出是否有人在筛选你吗?服务器执行并等待连接,但当客户端执行n个请求时,服务器终止。这段代码乱七八糟-在一些地方,尽管有错误,它仍继续执行。服务器使用错误的套接字描述符发送。格式化m使读取变得困难…服务器的任何输出?操作系统的任何错误消息?@kanika您应该在打印出的每一条消息后写换行符。否则,在进程(干净地)终止之前,您可能看不到任何内容。也就是说,请执行例如
printf(“未连接的\n”);
而不是
printf(“未连接的\n”)
感谢它在此之后成功执行