Привет всем! Такая проблема, что имеется echo-server, который прослушивает некоторый порт. Если подключиться к нему при помощи Hyper Terminal'a, то на экран терминала будут выводиться вся информация по мере получения за счёт того, что Hyper Terminal принимает подтверждения сервера (echo). А как реализовать эту же функцию терминала в своём приложении? Код приложения такой:
Код | void readDftTraffic() { // функция, пытающаяся читать траффик SOCKADDR_IN SockAddr; SockAddr.sin_port = htons(getServerPort("DFT")); SockAddr.sin_family = AF_INET; SockAddr.sin_addr.s_addr = inet_addr(getServerIP("DFT")); SOCKET Socket; Socket = socket(AF_INET,SOCK_STREAM,0); if (Socket==INVALID_SOCKET) { printf("Socket creation failed.\n"); return; } u_long ul = 1U; ioctlsocket(Socket, FIONBIO, &ul); if (connect(Socket,(SOCKADDR *)(&SockAddr),sizeof(SockAddr))!=0) { printf("DFT refused connection.\n"); closesocket(Socket); shutdown(Socket,NULL); return; } int RetVal; char buf[512]; // здесь должно быть что-то, что заставит прогу получать эхо с сервера
closesocket(Socket); shutdown(Socket,NULL); }
void main(void) { // тут ничего интересного if (SetupServers()) { WSADATA WsaDat; if (WSAStartup(MAKEWORD(1,1),&WsaDat)!=0) { printf("WSA Initialization failed.\n"); system("PAUSE"); return; } printf("Trying to read traffic at %s:%d.\nPress any key to exit...\n", getServerIP("DFT"), getServerPort("DFT")); do { readDftTraffic(); } while (!kbhit()); WSACleanup(); } return; }
|
Подскажите, плиз, что нужно написать в закомментированной строке, чтобы прога приняла данные с эхо-сервера!! Нужно ли ему что-то отправлять? Что использовать, recv() или recvfrom() и как? |