打开telnet连接并通过套接字向服务器发送消息的脚本

时间:2014-09-18 15:17:19

标签: bash sockets telnet

我必须做一个运行连接telnet的脚本,并向服务器发送两个号码。我确信服务器工作,因为如果我直接从telnet发送值一切正常。如果我运行的脚本完全按照我的方式执行某些操作无效。我可以看到客户端已连接,但我在屏幕上看不到应该通过telnet发送的号码。

这里的脚本(非常简单):

{ echo "3"; echo "6"; sleep 1; } | telnet localhost 8887

和部分服务器:

server.sin_family = AF_INET;
server.sin_addr.s_addr = htonl(INADDR_LOOPBACK);
server.sin_port = htons(8887);

...
//bind and listen
...

printf("connesso\n");

//Riceve un emssaggio dal client
for(i=0; i<2;) {

    bzero(client_message,2000);

    if((read_size = recv(client_sock , client_message , 2000 , 0)) > 0)
    {
        //Rimanda indietro il messaggio al client
        write(client_sock , client_message , strlen(client_message));

        numeri[i]=atoi(client_message);
        i++;            
    }
}

...
// some check
...

if(numeri[1] % numeri[0] == 0) {
    printf("multiplo\n");
}
else {
    printf("negativo\n");
}

所以,我应该在服务器上看到一些消息:

  1. &#34; Connesso&#34;
  2. &#34; multiplo&#34;或&#34; negativo&#34;
  3. 但是我只看到了&#34; Connesso&#34; ...就像我什么都没得到。显然我看到&#34; connesso&#34;在我运行脚本之后。

    有什么想法吗?

    感谢名单

1 个答案:

答案 0 :(得分:0)

此代码可以使用

{ echo "3"; echo "6"; sleep 1; } | telnet localhost 8887

我是如何测试的?安装netcat。然后从一个终端

nc -l 8887

从另一种终端类型

{ echo "3"; echo "6"; sleep 1; } | telnet localhost 8887

您将在运行nc的第一个终端中看到数字3和6