我正在编写一个简单的TCP / IP客户端,我想发送一些预先写好的消息(一些短字符串,如登录名和密码)。我偶然发现了一些代码并稍微重构了一下。但我不能以这种方式使用write
。
当我使用fgets时,它看起来像这样:
LOGIN
somelogin
PASS
somepass
OK
等等。
但是使用
err = write(sockfd, "name", 5);
似乎没有收到服务器的回复。
LOGIN
(nothing happens)
join()
实际上只是连接到主机
error()
正在撰写邮件并退出
主:
int sockfd, err;
struct sockaddr_in serv_addr;
struct hostent *server;
char buffer[256];
int main(int argc, char *argv[])
{
join();
while(true)
{
err = read(sockfd, buffer, 255);
if(err < 0)
error("ERROR reading from socket");
printf("%s", buffer);
bzero(buffer, 256);
fgets(buffer, 255, stdin);
err = write(sockfd, buffer, strlen(buffer));
if(err < 0)
error("ERROR writing to socket");
bzero(buffer, 256);
}
close(sockfd);
return 0;
}
我想这与write
函数和buff的类型有关。
提前致谢
答案 0 :(得分:4)
您似乎正在与基于行的服务进行交互。确保您在发送的数据中包含换行符\n
或\r\n
。