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

jpu*_*man 5 c sockets newline fgets

嗨,我对套接字编程很新,我编写了一个简单的客户端/服务器系统,通过套接字发送数据.我已经使它工作,以便我可以发送一个字符串到服务器并收到回复.

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

这是写作的代码:

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

Val*_*ity 9

是的,你的问题不是套接字正在添加新行(套接字永远不会处理或更改数据)而是调用fgets只是捕获你输入的换行符.您可以使用这个方便的一个衬垫将其移除:

buffer[strlen(buffer) - 1] = '\0';
Run Code Online (Sandbox Code Playgroud)

必须介于fgets和write之间.

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

if('\n' == buffer[strlen(buffer) - 1])
    buffer[strlen(buffer) - 1] = '\0';
Run Code Online (Sandbox Code Playgroud)