Skip to content

Instantly share code, notes, and snippets.

@infiniteregrets
Created January 26, 2023 14:53
Show Gist options
  • Save infiniteregrets/7ec354e92254e630c30bc4d77379e6fe to your computer and use it in GitHub Desktop.
Save infiniteregrets/7ec354e92254e630c30bc4d77379e6fe to your computer and use it in GitHub Desktop.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
int main() {
int udp_socket = socket(AF_INET, SOCK_DGRAM, 0);
if (udp_socket < 0) {
printf("Error creating socket\n");
return 1;
}
struct sockaddr_in server_addr;
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(8060);
inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr);
char message[] = "Hello World!";
struct msghdr msg;
memset(&msg, 0, sizeof(msg));
msg.msg_name = &server_addr;
msg.msg_namelen = sizeof(server_addr);
struct iovec iov;
iov.iov_base = message;
iov.iov_len = sizeof(message);
msg.msg_iov = &iov;
msg.msg_iovlen = 1;
int bytes_sent = sendmsg(udp_socket, &msg, 0);
if (bytes_sent < 0) {
printf("Error sending message\n");
return 1;
}
char buffer[1024];
memset(buffer, 0, sizeof(buffer));
struct sockaddr_in client_addr;
socklen_t client_addr_len = sizeof(client_addr);
struct msghdr recv_msg;
memset(&recv_msg, 0, sizeof(recv_msg));
recv_msg.msg_name = &client_addr;
recv_msg.msg_namelen = sizeof(client_addr);
struct iovec recv_iov;
recv_iov.iov_base = buffer;
recv_iov.iov_len = sizeof(buffer);
recv_msg.msg_iov = &recv_iov;
recv_msg.msg_iovlen = 1;
int bytes_received = recvmsg(udp_socket, &recv_msg, 0);
if (bytes_received < 0) {
printf("Error receiving message\n");
return 1;
}
printf("Received message: %s\n", buffer);
close(udp_socket);
return 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment