KHEXT
Зарегистрирован: 08.05.2003 Сообщения: 3 Откуда: Krasnodar
|
Добавлено: Пт Май 16 2003 03:37 Заголовок сообщения: Стою на асфальте я ... (Сокеты, Юникс, Си) |
|
|
struct sockaddr_in their_addr; // connector's address information if ((he=gethostbyname(server)) == NULL) { // get the host info perror("gethostbyname"); exit(1); } if ((sockfd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)) == -1) { perror("socket"); exit(1); } their_addr.sin_family = AF_INET; // host byte order their_addr.sin_port = htons(PORT); // short, network byte order their_addr.sin_addr = *((struct in_addr *)he->h_addr); memset(&(their_addr.sin_zero), '\0', ; // zero the rest of the struct if (connect(sockfd, (struct sockaddr *)&their_addr, sizeof(struct sockaddr)) == -1) { perror("connect"); exit(1); } if ((numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0)) == -1) { perror("recv"); exit(1); } buf[numbytes] = '\0'; printf("Received: %s",buf); send_line[0] = '\0'; strcat(send_line, command0); strcat(send_line, name); strcat(send_line, "\0");
send(sockfd, send_line, sizeof(send_line), 0); numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0); buf[numbytes] = '\0'; printf("Received: %s",buf); send_line[0] = '\0'; buf[0] = '\0'; strcat(send_line, command1); strcat(send_line, passw); printf("Sended: %s\n",send_line); write(sockfd, send_line, sizeof(send_line)); // send(sockfd, send_line, sizeof(send_line), MSG_OOB); numbytes=recv(sockfd, buf, MAXDATASIZE-1, 0); buf[numbytes] = '\0'; printf("Received: %s\n",buf);
/* А теперь объясните мне неграмтоному, почему во второй посылке сервер посылает меня куда подальше, сообщая, что переданная ему команда "" ошибочна, точнее, почему в строке все написано правильно, а сервак мне говорит, что я ему передал пустую строку. */ |
|