| 46 | } |
| 47 | } |
| 48 | void Request(const char* hostName, int port, TWelcomeSocketAddr* res) { |
| 49 | TUdpAddress addr = CreateAddress(hostName, port); |
| 50 | printf("addr = %s\n", GetAddressAsString(addr).c_str()); |
| 51 | |
| 52 | sockaddr_in6 sockAddr; |
| 53 | GetWinsockAddr(&sockAddr, addr); |
| 54 | |
| 55 | for (;;) { |
| 56 | char buf[10000]; |
| 57 | int sz = sizeof(buf); |
| 58 | sockaddr_in6 fromAddress; |
| 59 | bool rv = s.RecvFrom(buf, &sz, &fromAddress); |
| 60 | if (rv) { |
| 61 | if (sz == sizeof(TWelcomeSocketAddr) + HDR_SIZE) { |
| 62 | *res = *(TWelcomeSocketAddr*)(buf + HDR_SIZE); |
| 63 | break; |
| 64 | } |
| 65 | printf("Get unexpected %d bytes from somewhere?\n", sz); |
| 66 | } |
| 67 | |
| 68 | strcpy(buf + HDR_SIZE, "Hello_IB"); |
| 69 | TNetSocket::ESendError err = s.SendTo(buf, strlen(buf) + 1 + HDR_SIZE, sockAddr, FF_ALLOW_FRAG); |
| 70 | if (err != TNetSocket::SEND_OK) { |
| 71 | printf("SendTo() fail %d\n", err); |
| 72 | } |
| 73 | |
| 74 | Sleep(TDuration::MilliSeconds(100)); |
| 75 | } |
| 76 | } |
| 77 | }; |
| 78 | |
| 79 | // can hang if opposite side exits, but it's only basic test |
no test coverage detected