我是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似乎不起作用?
抱歉,感谢麻烦。
答案 0 :(得分:0)
您的代码非常混乱,但答案是。
readLine()
实际使用read()
从客户端读取输入并将其存储到str
,是的,逐字节。您希望以read from client input
==
比较字符串。使用strcmp()
/ strncmp()
。注意:
stdin
阅读时,fgets()
会读取并存储最后一个\n
。照顾好。