Итак, я пытаюсь настроить соединение UDP, которое приведет к введенной пользователем символьной строке, преобразует ее в шестнадцатеричную и отправит ее на сервер. Мне сказали, что можно отправлять вещи, отличные от массива символов, через сокеты (это единственный способ, которым я это делал раньше), но я ударил несколько стен. Во-первых, я получал целую нагрузку ошибок, когда я явно отправил целое число (жалуясь на то, что целое число цепляется на указатель), поэтому вместо этого я использовал его как указатель на пустоту. Я не получаю предупреждающие сообщения, но получаю ту же ошибку.UDP-сокеты в C - Передача целочисленных значений
Мой вопрос: допустил ли я ошибку в логической настройке сокета, или невозможно сделать то, что я пытаюсь сделать?
void main(){
/*Create UDP socket*/
clientSocket = socket(PF_INET, SOCK_DGRAM, 0); //setup the socket with an address structure and frame type
/*Configure settings in address struct*/
serverAddr.sin_family = AF_INET; //set the type of address
serverAddr.sin_port = htons(7891); //set the port number you'll be using
serverAddr.sin_addr.s_addr = inet_addr("127.0.0.1"); //set the address you're sending to
memset(serverAddr.sin_zero, '\0', sizeof serverAddr.sin_zero); //Just something that needs to be done
/*Initialize size variable to be used later on*/
addr_size = sizeof serverAddr;
pthread_t thread;
int t = 0;
int message;
while(1){
memset(buffer, '\0', sizeof buffer);
printf("Type a sentence to send to server:\n");
fgets(buffer,1024,stdin);
printf("You typed: %s",buffer);
message = ChartoInt(buffer);
printf("You are sending: %x\n", message);
/*Send message to server*/
t = sendto(clientSocket,(void*)message,sizeof(message),0,(struct sockaddr *)&serverAddr,addr_size);
printf("The Value of t is %x\n",t);
}
}
Вам действительно не нужно «конвертировать в шестнадцатеричный». Данные уже представлены численным образом внутри компьютера и линии передачи данных. Просто передайте строку как есть. –
Прежде чем пытаться отправить что-либо через UDP, точно определите, как информация, которую вы собираетесь отправлять, должна быть закодирована как кусок байтов. –
Я знаю, что он уже конвертирует его, но мне нужно добавить бит набивки позже, и я подумал, что это будет самый простой способ сделать это, если бы он был уже в числовой форме. Программа никоим образом не закончена, Дэвид, я буду реализовывать ее позже. – Michael