1//
2// dict.cpp
3//
4// This sample demonstrates the StreamSocket and SocketStream classes.
5//
6// Copyright (c) 2005-2006, Applied Informatics Software Engineering GmbH.
7// and Contributors.
8//
9// SPDX-License-Identifier: BSL-1.0
10//
11
12
13#include "Poco/Net/StreamSocket.h"
14#include "Poco/Net/SocketStream.h"
15#include "Poco/Net/SocketAddress.h"
16#include "Poco/StreamCopier.h"
17#include "Poco/Path.h"
18#include "Poco/Exception.h"
19#include <iostream>
20
21
22using Poco::Net::StreamSocket;
23using Poco::Net::SocketStream;
24using Poco::Net::SocketAddress;
25using Poco::StreamCopier;
26using Poco::Path;
27using Poco::Exception;
28
29
30int main(int argc, char** argv)
31{
32 const std::string HOST("dict.org");
33 const unsigned short PORT = 2628;
34
35 if (argc != 2)
36 {
37 Path p(argv[0]);
38 std::cout << "usage: " << p.getBaseName() << " <term>" << std::endl;
39 std::cout << " looks up <term> in dict.org and prints the results" << std::endl;
40 return 1;
41 }
42 std::string term(argv[1]);
43
44 try
45 {
46 SocketAddress sa(HOST, PORT);
47 StreamSocket sock(sa);
48 SocketStream str(sock);
49
50 str << "DEFINE ! " << term << "\r\n" << std::flush;
51 str << "QUIT\r\n" << std::flush;
52
53 sock.shutdownSend();
54 StreamCopier::copyStream(str, std::cout);
55 }
56 catch (Exception& exc)
57 {
58 std::cerr << exc.displayText() << std::endl;
59 return 1;
60 }
61
62 return 0;
63}
64