LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 626|回复: 0

web服务器启动后,本机可以访问,局域网内其他机子不能访问,为什么?

[复制链接]
发表于 2005-5-12 12:59:52 | 显示全部楼层 |阅读模式
以下是部分相关程序,请帮忙看看是哪里出了问题
#include    <stdio.h>
#include    <unistd.h>
#include    <sys/types.h>
#include    <sys/socket.h>
#include    <netinet/in.h>
#include    <netdb.h>
#include    <time.h>
#include    <strings.h>

#define   HOSTLEN  256
#define   BACKLOG  1

int make_server_socket_q(int , int );

int make_server_socket(int portnum)
{
    return make_server_socket_q(portnum, BACKLOG);
}
int make_server_socket_q(int portnum, int backlog)
{
    struct  sockaddr_in   saddr;   /* build our address here */
    struct  hostent     *hp;   /* this is part of our    */
    char    hostname[HOSTLEN];     /* address            */
    int sock_id;           /* the socket             */

    sock_id = socket(PF_INET, SOCK_STREAM, 0);  /* get a socket */
    if ( sock_id == -1 )
        return -1;

    /** build address and bind it to socket **/

    bzero((void *)&saddr, sizeof(saddr));   /* clear out struct     */
    gethostname(hostname, HOSTLEN);         /* where am I ?         */
    hp = gethostbyname(hostname);           /* get info about host  */
                                            /* fill in host part    */
    bcopy( (void *)hp->h_addr, (void *)&saddr.sin_addr, hp->h_length);
    saddr.sin_port = htons(portnum);        /* fill in socket port  */
    saddr.sin_family = AF_INET ;            /* fill in addr family  */
    if ( bind(sock_id, (struct sockaddr *)&saddr, sizeof(saddr)) != 0 )
           return -1;

    /** arrange for incoming calls **/

    if ( listen(sock_id, backlog) != 0 )
        return -1;
    return sock_id;
}

int connect_to_server(char *host, int portnum)
{
    int sock;
    struct sockaddr_in  servadd;        /* the number to call */
    struct hostent      *hp;            /* used to get number */

    /** Step 1: Get a socket **/

    sock = socket( AF_INET, SOCK_STREAM, 0 );    /* get a line   */
    if ( sock == -1 )
        return -1;

    /** Step 2: connect to server **/

    bzero( &servadd, sizeof(servadd) );     /* zero the address     */
    hp = gethostbyname( host );             /* lookup host's ip #   */
    if (hp == NULL)
        return -1;
    bcopy(hp->h_addr, (struct sockaddr *)&servadd.sin_addr, hp->h_length);
    servadd.sin_port = htons(portnum);      /* fill in port number  */
    servadd.sin_family = AF_INET ;          /* fill in socket type  */

    if ( connect(sock,(struct sockaddr *)&servadd, sizeof(servadd)) !=0)
           return -1;

    return sock;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表