0

cygwinを使用してコードをコンパイルするときに、単純なクライアントプログラム「ソケットプログラミング」を作成しています。「「_red」への未定義の参照」というエラーが発生しました。コードは以下のとおりです。このステートメントを使用してコンパイルしています。このエラーが発生しました。実際にヘルプを使用できます。コードは次のとおりです。

#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netdb.h>
#include <stdlib.h>
#include <strings.h>
#include <netinet/in.h>

#define SERVER_TCP_PORT 2000
#define BUFLEN 256

int main(int argc,char **argv)
{
    int n,bytes_to_read;
    int sd,port;
    struct hostent *hp;
    struct sockaddr_in server;
    char *host,*bp,rbuf[BUFLEN],sbuf[BUFLEN];
    switch(argc) {
        case 2:
            host = argv[1];
            port = atoi(argv[2]);
            break;
        default:
            fprintf(stderr,"Usage: %s host[port] \n",argv[0]);
            exit(1);
    }
    /*Create a streamm socket*/
    if ((sd=socket(AF_INET,SOCK_STREAM,0))==-1){
        fprintf(stderr,"Can't create a socket\n");
        exit(1);
    }
    bzero ((char *)&server,sizeof(struct sockaddr_in));
    server.sin_family = AF_INET;
    server.sin_port = htons(port);
    if((hp = gethostbyname(host))==NULL){
        fprintf (stderr,"Can't get server's address\n");
        exit(1);
    }
    //bcopy(hp->h_addr,(char *)&server.sin_addr,hp->h_length);
    /*connecting to the server*/
    if (connect (sd,(struct sockaddr *)&server,sizeof(server))==-1){
        fprintf(stderr,"Can't connect \n");
        exit(1);
    }
    printf("Connected:server's address is %s\n",hp->h_name);
    printf("Transmit: \n");
    gets(sbuf);                  /*get user's text*/
    write (sd,sbuf,BUFLEN);      /*send it out*/
    printf("Receive: \n");
    bp = rbuf;
    bytes_to_read = BUFLEN;
    while ((n=red(sd,bp,bytes_to_read))>0){
        bp+=n;
        bytes_to_read -=n;
    }
    printf("%s\n",rbuf);
    close(sd);
    return(0);
}
4

1 に答える 1

2

ライン上

while ((n=red(sd,bp,bytes_to_read))>0){

それは赤です、あなたはおそらく読むことを意味します

于 2012-10-18T19:44:20.113 に答える