Trouble with Ethernet Shield

I’ve established a connection between my computer and an Arduino Mega 2560 with an Ethernet Shield, and I’m sending string via UDP. But, it appears to take a lot of time to establish the connection, and therefore the first string I receive is a large string consisting of seven strings I would want to receive one at a time.
“BLARGHHelloHelloHelloHelloHelloHello”

I can solve this by having a delay(30000), but I would like to find another way of doing it. Preferably reduce or eliminate the connection time.

#include <SPI.h>
#include <Ethernet.h>
#include <EthernetUdp.h>

//Arduino
IPAddress ip(192,168,3,177);
IPAddress gateway(192,168,3,1);
IPAddress subnet(255,255,255,0);
byte mac[] = { 0x90, 0xA2, 0xDA, 0x0E, 0xC0, 0x28 };
unsigned int localPort = 8888;
//End Arduino

//Receiver
IPAddress receiver(192,168,3,208);
unsigned int receivePort = 11000;
//End Receiver

EthernetUDP udp;

void setup() {
  Ethernet.begin(mac,ip,gateway,gateway,subnet);
  udp.begin(localPort);
  //delay(30000);
  sendData("BLARGH");
  delay(2000);
}

void loop() {
  sendData("Hello");
}

void sendData(char* dataString)
{
  udp.beginPacket(receiver,receivePort);
  udp.write(dataString);
  udp.endPacket();
  delay(2000);
}

Can you do something like:

while( udp.begin(localPort) == 0 ) {
   // waiting message, dot etc. to serial console
}

instead of the delay ?

That resulted in it never sending anything over ethernet.

and therefore the first string I receive is a large string consisting of seven strings I would want to receive one at a time.
"BLARGHHelloHelloHelloHelloHelloHello"

The usual solution is for YOU to include delimiters, so the receiver knows where YOU think the stream of data starts and ends.

Yes, but I want to solve the problem, not go around it.