Hi im solving problem of function of preprocesor, i dont understand why this cant be linked. Im speaking about funciton communication because there seems is the problem
Code:
#include <string.h>
#include <sys/types.h>
#ifdef _WIN32 // _WIN32 is defined by all Windows 32 and 64 bit compilers, but not by others.
#include <winsock2.h>
#define WSDATA WSADATA wsaData;
#define INITSOCK if (WSAStartup(0x0202, &wsaData) == 0) { if (wsaData.wVersion == 0x0202) {
#define ENDOFSOCK } WSACleanup(); }
#define DECLARE SOCKET
#define CON(x) (x != INVALID_SOCKET)
#define CLOSE(x) closesocket(x);
#else
#include <sys/socket.h>
#include <netinet/in.h>
#define WSDATA ;
#define INITSOCK ;
#define ENDOFSOCK ;
#define DECLARE int
#define CON(x) (x >= 0)
#define CLOSE(x) close(x);
#endif
typedef struct {
char messege[255];
char client_addr[22];
} udppack;
char messege[255]; //command - msg
char rcvd_msg[255]; // recieved messege
char server_address_str[22];
int max_count_of_rcv = 10;
struct udppack *pack;
struct sockaddr_in server_socket_address;
struct in_addr server_address;
struct sockaddr_in client_socket_address;
char *server_addr;
char *server_port;
int server_port_int;
int addrlen;
WSDATA
DECLARE client_socket;
//address
int communicate() {
INITSOCK
client_socket = socket(AF_INET, SOCK_DGRAM, 0);
if CON(client_socket) {
client_socket_address.sin_family = AF_INET;
client_socket_address.sin_addr.s_addr = INADDR_ANY;
client_socket_address.sin_port = 0;
if (bind(client_socket, (struct sockaddr*)&client_socket_address,
sizeof(client_socket_address)) == 0) {
server_addr = strtok(server_address_str,":");
server_port = strtok(NULL,"");
server_address.s_addr = inet_addr(server_addr);
server_port_int = htons((u_short)atoi(server_port));
printf("DatagramType sends to %s:%hu\n",
//inet_aton(server_address),
ntohs(server_port_int));
addrlen = sizeof(client_socket_address);
if (getsockname(client_socket, (struct sockaddr*)&client_socket_address,
&addrlen) == 0) {
printf("as %s:%hu\n",
inet_ntoa(client_socket_address.sin_addr),
ntohs(client_socket_address.sin_port));
server_socket_address.sin_family = AF_INET;
server_socket_address.sin_addr = server_address;
server_socket_address.sin_port = server_port_int;
}
}
}
ENDOFSOCK
return 0;
}