I've read the code I pasted from beej.us and in no way it connects to the other computer as I'm not connecting, I'm just sending info to there.
Code:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>
#define SERVERPORT 8080 // the port users will be connecting to
int main(int argc, char *argv[])
{
int i=2;
int sockfd;
struct sockaddr_in their_addr; // connector's address information
struct hostent *he;
int numbytes;
char *buf=(char*)malloc(sizeof(char)*100);
int broadcast = 1;
//char broadcast = '1'; // if that doesn't work, try this
if ((he=gethostbyname(argv[1])) == NULL) { // get the host info
perror("gethostbyname");
exit(1);
}
if ((sockfd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) {
perror("socket");
exit(1);
}
// this call is what allows broadcast packets to be sent:
if (setsockopt(sockfd, SOL_SOCKET, SO_BROADCAST, &broadcast,
sizeof broadcast) == -1) {
perror("setsockopt (SO_BROADCAST)");
exit(1);
}
their_addr.sin_family = AF_INET; // host byte order
their_addr.sin_port = htons(SERVERPORT); // short, network byte order
their_addr.sin_addr = *((struct in_addr *)he->h_addr);
memset(their_addr.sin_zero, '\0', sizeof their_addr.sin_zero);
while(argv[i]!=NULL)
{
strcat(buf, argv[i]);
strcat(buf, " ");
i++;
}
if ((numbytes=sendto(sockfd, buf, strlen(buf), 0,
(struct sockaddr *)&their_addr, sizeof their_addr)) == -1) {
perror("sendto");
exit(1);
}
inet_ntoa(their_addr.sin_addr);
close(sockfd);
return 0;
}
So basically what you're telling me is to use the connect function inside this code correct ?
Thanks.