socket编程与客户端服务器的读写

时间:2015-01-28 08:09:13

标签: c sockets

我是c程序和套接字的新手,我想在我开始深入研究之前弄清楚我的概念。下面是我的代码,假设我的连接都已完成,并进入那些fd是clientFd的方法。

服务器:

writeSomething (int fd)
{
    char str [200];

    while (readLine (fd, str)) 
    printf ("You have entered - %s\n", str);
}

readLine (int fd, char* str)
{
    int n;
    do /* Read characters until NULL or end-of-input */
    {
        n = read (fd, str, 1); /* Read one character */
    }
    while (n > 0 && *str++ != 0);       
    return (n > 0); /* Return false if end-of-input */
}

客户端:

readSomething (int fd)
{
    print_intro();
    char input[200];
    do {
        printf ("Please enter something > ");
        fgets(input, 200, stdin);
        if (input == "end")
        {
            printf ("*** Thank you for using, have a nice day! ***");
            close (fd);
        } else {
            write (fd, input, strlen (input) + 1);
        }

    } while ( input == "")
}

我的问题: 1)readLine()方法是否真的有必要,或者我只是从客户端输入读取并存储到变量' str'? 2)如果是,我如何将输入存储到' str'? 3)在用户键入'结束'之前,如何进行无限循环以提示输入,我的if if似乎不起作用?

抱歉,感谢麻烦。

1 个答案:

答案 0 :(得分:0)

您的代码非常混乱,但答案是。

  1. readLine() 实际使用read()从客户端读取输入并将其存储到str,是的,逐字节。您希望以read from client input
  2. 做什么 else
  3. 不清楚。
  4. 您无法使用==比较字符串。使用strcmp()/ strncmp()
  5. 注意:

    1. 请添加功能的返回类型。不要依赖编译器来完成你应该做的任务。
    2. 在从stdin阅读时,fgets()会读取并存储最后一个\n。照顾好。