[192.168.0.16] #pragma lint -1 #include #include #include #include #include #include #include #include int startMarinetti(void); void stopMarinetti(int flag); int finger(word ipid) { static srBuff srBuffer; static rlrBuff rlrBuffer; static char buffer[1024+1]; longword tick; //Handle h; int fd; // 1 - get info and print it out. TCPIPStatusTCP(ipid, &srBuffer); WriteCString("Received connection from "); TCPIPConvertIPToCASCII(srBuffer.srDestIP, buffer, 0); WriteCString(buffer); WriteCString(":"); Int2Dec(srBuffer.srDestPort, buffer, 5, 0); buffer[5] = 0; WriteCString(buffer); WriteCString("\r\n"); tick = GetTick() + 1800; do { TCPIPPoll(); TCPIPStatusTCP(ipid, &srBuffer); if (srBuffer.srState == TCPSESTABLISHED) break; } while (GetTick() < tick); if (srBuffer.srState != TCPSESTABLISHED) { WriteCString("timeout - state not established.\r\n"); return 0; } tick = GetTick() + 3600; //h = NULL; do { TCPIPPoll(); TCPIPReadLineTCP(ipid, "\p\r\n", 0x00, (Ref)buffer, 1024, &rlrBuffer); if (rlrBuffer.rlrBuffCount) break; //h = rrBuffer.rrBuffHandle; //if (h) break; } while (GetTick() < tick); //if (!h) if (!rlrBuffer.rlrBuffCount) { WriteCString("timout - reading data.\r\n"); return 0; } buffer[rlrBuffer.rlrBuffCount] = 0; // null terminate it fd = open(buffer, O_RDONLY); if (fd < 0) { WriteCString("Unable to open file "); WriteCString(buffer); WriteCString("\r\n"); return 0; } while (true) { int cnt = read(fd, buffer, 1024); if (!cnt) break; TCPIPWriteTCP(ipid, buffer, cnt, false, false); TCPIPPoll(); if (cnt != 1024) break; } close(fd); //HLock(h); // just echo it back for now. //TCPIPWriteTCP(ipid, buffer, rrBuffer.rrBuffCount, true, 0); // wait to send... while (true) { TCPIPPoll(); TCPIPStatusTCP(ipid, &srBuffer); if (srBuffer.srSndQueued == 0) break; } //DisposeHandle(h); return 0; } int main(int argc, char **argv) { int startFlag; word ipid; startFlag = startMarinetti(); if (startFlag == -1) { ErrWriteCString("Unable to establish network connection\r\n."); return 1; } ipid = TCPIPLogin(MMStartUp(), 0, 0, 0, 64); TCPIPSetSourcePort(ipid, 79); TCPIPListenTCP(ipid); while(true) { int child; int err; TCPIPPoll(); child = TCPIPAcceptTCP(ipid, 0); if (_toolErr) continue; finger(child); TCPIPCloseTCP(child); TCPIPPoll(); //break; } TCPIPCloseTCP(ipid); TCPIPLogout(ipid); stopMarinetti(startFlag); return 0; }