套接字从Java客户端读取\ n

时间:2013-05-29 07:46:36

标签: c++ c sockets

使用下面的代码我从套接字读取数据。另一方面,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”。任何人都可以解释这个的原因吗?以及如何提取我发送的确切数据。

2 个答案:

答案 0 :(得分:1)

我的猜测是新行来自Java客户端。

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

答案 1 :(得分:1)

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

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

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