int CSocket::sendmessage(char *ip, int port, CBuffer *source) { if(sockid<0)return -1; int size = 0; sockaddr_in addr; if(udp) { size = std::min(source->count, 8195); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ip); size = sendto(sockid, source->data, size, 0, (sockaddr *)&addr, sizeof(sockaddr_in)); } else { CBuffer sendbuff; sendbuff.clear(); if(format == 0) { sendbuff.writeushort(source->count); sendbuff.addBuffer(source); size = send(sockid, sendbuff.data, sendbuff.count, 0); }else if(format == 1) { sendbuff.addBuffer(source); sendbuff.writechars(formatstr); size = send(sockid, sendbuff.data, sendbuff.count, 0); }else if(format == 2) size = send(sockid, source->data, source->count, 0); } if(size == SOCKET_ERROR)return SOCKET_ERROR; return size; }
int CSocket::sendmessage( const char *ip, int port, CBuffer *source ) { if (sockid<0) return -1; int size = 0; SOCKADDR_IN addr; if(udp) { size = min(source->count, 8195); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ip); size = sendto(sockid, source->data, size, 0, (SOCKADDR *)&addr, sizeof(SOCKADDR_IN)); } else { CBuffer sendbuff; sendbuff.clear(); if(format == 0) { sendbuff.writeushort(source->count); sendbuff.addBuffer(source); size = send(sockid, sendbuff.data, sendbuff.count, 0); } else if(format == 1) { sendbuff.addBuffer(source); sendbuff.writechars(formatstr); size = send(sockid, sendbuff.data, sendbuff.count, 0); } else if(format == 2) size = send(sockid, source->data, source->count, 0); } return ((size = SOCKET_ERROR) ? -WSAGetLastError() : size); }
int CSocket::sendmessage(char *ip, int port, CBuffer *source) { if(sockid<0)return -1; int size = 0; SOCKADDR_IN addr; if(proc == UDP_NORMAL ) { size = min(source->count, 8195); addr.sin_family = AF_INET; addr.sin_port = htons(port); addr.sin_addr.s_addr = inet_addr(ip); size = sendto(sockid, source->data, size, 0, (SOCKADDR *)&addr, sizeof(SOCKADDR_IN)); } else if ( proc == UDP_MULTICAST ) { //...UDP MULTI-CAST RE-USES SAME ADDRESS size = min(source->count, 8195); //...For multi-cast : check if we are sending to a different port if ( port!= 0 ){ memcpy (&addr, &udpAddr , sizeof(SOCKADDR_IN) ); addr.sin_port = htons(port); } size = sendto(sockid, source->data, size, 0, (SOCKADDR *)&addr , sizeof(SOCKADDR_IN)); } else { CBuffer sendbuff; sendbuff.clear(); if(format == 0) { sendbuff.writeushort(source->count); sendbuff.addBuffer(source); size = send(sockid, sendbuff.data, sendbuff.count, 0); }else if(format == 1) { sendbuff.addBuffer(source); sendbuff.writechars(formatstr); size = send(sockid, sendbuff.data, sendbuff.count, 0); }else if(format == 2) size = send(sockid, source->data, source->count, 0); } if(size == EWOULDBLOCK)return -errno; return size; }