Добавил:
Studfiles2
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Тестовые примеры / ch11 / tli / tli_clts1
.C#include <sys/systeminfo.h>
#include "tli.h"
#define MSG1 "Hello MSG1 from clts1"
/* get a host name */
int gethost( int argc, char* argv[], char host[], int len)
{
if (argc!=3) {
if (sysinfo(SI_HOSTNAME,host,len)< 0) {
perror("sysinfo");
return -1;
}
}
else strcpy(host,argv[2]);
return 0;
}
int main( int argc, char* argv[])
{
char buf[80], host[80];
int port=-1, rc, flags=0;
if (argc < 2) {
cerr << "usage: " << argv[0] << " <service|port_no> [<hostname>]\n";
return 1;
}
/* check if port no. of a socket name is specified */
(void)sscanf(argv[1],"%d",&port);
tli *sp;
if (port==-1) {
if (gethost(argc, argv, host, sizeof host) < 0) return 2;
sp = new tli( host, argv[1], 1 );
} else sp = new tli (port, 1);
if (!sp || !sp->good()) {
cerr << "clts1: create transport endpoint object fails\n";
return 3;
}
/* Bind a name to the transport end-point */
if (sp->Bind() < 0) {
cerr << "clts1: bind fails\n";
return 4;
}
struct t_unitdata *ud = 0;
if (sp->readfrom( buf, sizeof buf, flags, ud) < 0)
{
cerr << "clts1: readfrom fails\n";
return 5;
}
cerr << "clts1: read msg: '" << buf << "'\n";
if (sp->writeto(MSG1, strlen(MSG1)+1, flags, ud) < 0)
{
cerr << "clts1: writeto fails\n";
return 6;
}
if (sp->readfrom(buf, sizeof buf, flags, ud) < 0)
{
cerr << "clts: readfrom fails\n";
return 7;
}
cerr << "clts1: read msg: '" << buf << "'\n";
return 0;
}
Соседние файлы в папке tli