QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 688|回复: 1

又有问题了,程序编译出错哦

[复制链接]
发表于 2003-9-16 11:33:20 | 显示全部楼层 |阅读模式
还是照着书上抄的一个程序,编译出错已经修改过来了,功能(通过 3387 端口连 接到命令行中指定的主机,然后得到服务器发送的字符串。)没有实现,情大家帮忙看看
[board@board board]$ test1 192.168.0.4
Segmentation fault
[board@board board]$

[code]
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/wait.h>
#include <netdb.h>
#include <netinet/in.h>
#define PORT 3387 /*定义用户连接远程主机的端口*/
#define MAXDATASIZE 100 /*定义可以接受的最大字节数*/
int main(int argc, char *argv[])
{
        int sockfd,numbytes;
        char buf[MAXDATASIZE];
        struct hostent *he;
        struct sockaddr_in their_addr; /*定义连接客户信息*/
       
        bzero(&their_addr,sizeof(their_addr));/*置空其他结构*/
        their_addr.sin_family=AF_INET; /*本机字节顺序*/
        their_addr.sin_port=htons(PORT); /*端口转换成网络字节顺序*/
        their_addr.sin_addr=(*(struct in_addr * )he->h_addr);
       

        if(argc!=2)
        {
                fprintf(stderr,"usage:client hostname\n ");
                exit(1);
        }
        if ((he=gethostbyname(argv[1]))==NULL)
        {/*获取主机信息*/
                herror("gethostbyname");
                exit(1);
        }


        if ((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
        {
                perror("socket");
                exit(1);
        }

        if (connect(sockfd, (struct sockaddr *)&their_addr,sizeof(struct
                                                 sockaddr)) == -1)
        {
        perror("connect");
                exit(1);
        }
        if ((numbytes=recv(sockfd,buf,MAXDATASIZE,0))==-1)
        {perror("recv");
                exit(1);
        }
        buf[numbytes]='\0';
        printf("Recived :%s",buf);
        close(sockfd);
        return 0;
}
发表于 2003-9-18 22:16:46 | 显示全部楼层
在传递主机地址时,由于你输入的IP地址形式,就不应该用gethostbyname()来获取地址吧,应该用inet_addr()吧,你试试。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-14 23:49 , Processed in 0.043866 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

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