1

使用下面的代码我从套接字读取数据。另一方面,Java 客户端发送字符串数据。但是在读取数据时,额外的 \n 会出现在字符串的末尾。谁能解释为什么会这样。

代码:

  unsigned char buf[100]; 
  rd=read(newsockfd,buf,100);
  char cmd[30];
  sprintf(cmd,"%s",buf);

结果:

buf->"DATA\n"
cmd->"DATA\n"

如果我从客户端发送“DATA”,那么我会在服务器端获得“DATA\n”。谁能解释这个原因?以及如何提取我发送的确切数据。

4

2 回答 2

1

我的猜测是换行符来自 Java 客户端本身。

客户端可能正在使用类似函数sendLine(String)在将其发送到网络之前向传递给它的字符串添加换行符的东西。我不知道Java,但这似乎很有可能。

于 2013-05-29T08:45:55.450 回答
1

在java中,您可以说(正如其他人所指出的)socket.writeLine("Data") 在末尾附加一个“\n”。不过,我注意到一件事,在您编写的代码中,您可能会遇到错误,如果发件人向您发送超过 100 个字符,您会收到内存错误。

unsigned char buf[100];   
rd=read(newsockfd,buf,1024);

在这里你说你想读取最多 1024 个字符/字节,但缓冲区被声明为 [100],小心!

于 2013-05-29T12:13:44.557 回答