在套接字上的write()处理const char *错误

时间:2016-03-17 17:14:30

标签: c sockets char

我正在编写一个简单的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的类型有关。

提前致谢

1 个答案:

答案 0 :(得分:4)

您似乎正在与基于行的服务进行交互。确保您在发送的数据中包含换行符\n\r\n