CPP客户端服务器发送失败

时间:2015-12-10 07:08:15

标签: c++ sockets

该计划主要建议: 从txt文件中读取单词并发送服务器。 我得到了这个eroor:

  

套接字发送失败:由对等方重置连接
  // rc = send(fd,word,length,0);

如果你想给server.cpp

,我会给你client.cpp
/*
g++ client.cpp -Wall -g3 -o ozgurtcpclnt
*/

using namespace std;

#include <sys/socket.h>
#include <sys/types.h>
#include <arpa/inet.h>
#include <netinet/in.h>
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.h>
#include <string.h>
#include "first.h"
#include <vector>

#define TCP_SERVER_PORT 54321
#define BUFFER_LENGTH   1024

const char * message = "selam dostum!";

int main () {
    char word[IO_BUF_LENGTH + 1] = { 0 };

    int length = 0;

    FILE * fp;

    fp = fopen("combinedText.txt", "r");

    if (fp == NULL) {
        perror("fopen failed");
        return 0;
    }

    char buffer [BUFFER_LENGTH + 1] = {0};
    int fd;
    int rc;
    struct sockaddr_in s_addr;

    memset (&s_addr, 0, sizeof (s_addr));

    fd = socket (AF_INET, SOCK_STREAM, 0);

    if (fd < 0) {
        printf ("socket failed : %s\n", strerror (errno));
        exit (1);
    }

    s_addr.sin_family = AF_INET;
    s_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
    s_addr.sin_port = htons (TCP_SERVER_PORT);

    rc = connect (fd, (struct sockaddr *)&s_addr, sizeof (s_addr));

    if (rc < 0) {
        printf ("connect failed : %s\n", strerror (errno));
        exit (1);
    }
    /*length = strlen(message);
    rc = send (fd, message, length, 0);*/

    while (fscanf(fp, MAX_WORD_SCANF, word) != EOF) {
        length = strlen(word);

        if (length > 1) {
            rc = send (fd, word, length, 0);

            if (rc != length) {
                printf (" socket send failed : %s\n", strerror (errno));
                exit (1);
            }
        }
    }

    fclose(fp);

    length = strlen(word);
    rc = recv (fd, word,length, 0);

    if (rc < 0) {
        printf ("recv failed : %s\n", strerror (errno));
        exit (1);
    }

    printf ("Server said : %s\n", word);

    return 0;
}

0 个答案:

没有答案