Проблема с функцией записи
Всем привет,
Я начинающий программист и не понимаю, почему моя функция write() не работает с этими аргументами. Вот почему я здесь.
Когда я выполняю свою программу, я получил ошибку une с моей функцией записи и с моей функцией чтения. это нормально для моей функции чтения, потому что она зависит от функции записи. Я искал в Google свои аргументы, но думаю, что они хороши. Так что я не понимаю, почему это не работает.
Мой сценарий написан на языке Си.
Что я уже пробовал:
int main(int argc,char **argv) { int sockfd,n; char sendline[100]; char recvline[100]; struct sockaddr_in servaddr; sockfd=socket(AF_INET,SOCK_STREAM,0); memset(&servaddr, 0, sizeof (servaddr)); servaddr.sin_family=AF_INET; servaddr.sin_port=htons(22000); inet_pton(AF_INET,"127.0.0.1",&(servaddr.sin_addr)); printf("%d\n", inet_pton(AF_INET,"198.168.1.19",&(servaddr.sin_addr))); connect(sockfd,(struct sockaddr *)&servaddr,sizeof(servaddr)); while(1) { memset(sendline,0, 100); memset( recvline,0, 100); fgets(sendline,100,stdin); if(write(sockfd,sendline,strlen(sendline)+1) < 0) { printf("The write function doesn't work !\n"); } if(read(sockfd,recvline,100) < 0) { printf("The read function doesn't work !\n"); } printf("%s",recvline); } }
jsc42
Захватите фактический код ошибки из "записи" и включите его в свое сообщение об ошибке. Затем посмотрите код - это должно дать вам ключ к разгадке, в чем заключается ошибка.
напр.
int errcode;
if ((errcode = write(sockfd, sendline, strlen(sendline) + 1)) < 0)
printf("функция записи вернула %d\n", errcode);
Кроме того, я подозреваю, что вам может понадобиться '&' перед аргументом recvline в функции read (рад быть исправленным, если я ошибаюсь).
Rick York
Нет, в этом нет необходимости. Массив без индекса-это то же самое, что указатель на массив, поэтому & не требуется.
Member 14106234
Мой код ошибки для моей функции чтения и записи равен -1, а & перед recvline ничего не меняет. Для меня проблема в функции чтения-это аргумент "sockfd", потому что у нас уже есть проблема с ним в функции записи.