update netcat 1.13 to 1.14

来源:互联网 发布:善领最新数据下载 编辑:程序博客网 时间:2024/06/03 17:10

解释一下,当应用netcat的传输文件的功能的时候。

传输端完成之后不能输入也没有退出,

接受端接收完之后能输入,在传输端显示,

是不是应该都退出较好呢?

改进之后:

可以加-C选项,既接受端也可以先运行!直到接收完文件为止。

接收端和传输端都退出了


update netcat 1.13 to 1.14

modify by chenghao0511##gmail.com 2013/05/04

why?

after:
remote:nc -lp 55 < doexec.c
local:nc ip 55 > test.c

remote:nc -lp 55 < doexec.c
_         [can not type in]
local:nc ip 55 > test.c
_         [can type in,remote out]

you can use:
nc -lp 66 < doexec.c
nc -C 127.0.0.1 66 >test.c
or:
nc -lp 66 > test1.c
nc -C 127.0.0.1 66 < doexec.c

how to update:

unsigned int o_wait = 0;
USHORT o_zero = 0;
+USHORT o_connect = 0;


    rr = recv (fd, bigbuf_net, BIGSIZ, 0);

    if (rr <= 0) {

Debug (("recv rr <= 0 "))
+      if (_isatty( 1 ) == 0)         /* > recv = 0,fix by chenghao0511#gmail.com*/
+        exit(0);
      FD_CLR (fd, ding1);        /* net closed, we'll finish up... */


        rr = read (0, bigbuf_in, BIGSIZ);
        if (rr <= 0) {            /* at end, or fukt, or ... */
            close (0);

+              shutdown(fd, 0x02);      /* by chenghao0511 */
+              closesocket (fd);
+            if(o_connect)
+              exit(0);
+              return (0);
        } else {
            rzleft = rr;
            zp = bigbuf_in;

            case 'C':            /* connect then cycle back to start instead of exiting */
+    o_connect = 1;
      cycle = 1;
      break;




netcat 1.14 by chenghao0511


https://www.box.com/s/pdxeqd0021ahk4uw3mk5


nc -lp 66 > test1.c
nc -C 127.0.0.1 66 < doexec.c

上面的链接里没有考虑上述情况,因此,03-05-04,加入全局变量o_connect,如果有-C选项o_connect赋值为1。

+            if(o_connect)
+              exit(0);

这里的意思是数据传输完了之后退出程序,exit(0)。

netcat 1.142 by chenghao0511

https://www.box.com/s/nckg7gpwv09pqgr43emx



原创粉丝点击