C套接字客户端发送换行符

时间:2014-03-29 02:26:45

标签: c sockets newline fgets

您好我是套接字编程的新手,我已经编写了一个简单的客户端/服务器系统来通过套接字发送数据。我已经让它工作了,所以我可以发送一个字符串到服务器并收到回复。

现在我试图让服务器识别从客户端发送的命令,但是我从客户端发送的所有内容都有一个换行符。我知道我可以从服务器端处理这个问题,但有没有办法从客户端删除换行符?

以下是编写代码的代码:

printf("Please enter the message: ");
bzero(buffer,256);
fgets(buffer,255,stdin);
n = write(sockfd,buffer,strlen(buffer));

2 个答案:

答案 0 :(得分:8)

确实,问题不在于套接字是在添加新行(套接字从不处理或更改数据)而是调用fgets只是捕获您键入的换行符。您可以使用这个方便的一个衬垫将其移除:

buffer[strlen(buffer) - 1] = '\0';

必须介于fgets和write之间。

为了更安全一点,最好使用

if('\n' == buffer[strlen(buffer) - 1])
    buffer[strlen(buffer) - 1] = '\0';

答案 1 :(得分:1)

对于您的问题,一个很好的解决方案是buffer[strcspn(buffer,'\n')] = 0

您可以在此处查看有关strcspn的更多详细信息https://www.tutorialspoint.com/c_standard_library/c_function_strcspn.htm

祝你好运!