• 大小: 18KB
    文件类型: .rar
    金币: 2
    下载: 1 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签: C语言  telnet  

资源简介

用C语言实现的telnet 大家可以进行简单的学习

资源截图

代码片段和文件信息

#include “pty_fun.h“   

int ptym_open(char *pts_name int pts_namesz)  
{  
    char *ptr;  
    int fdm;  
    /* 
     *return the name of the master device so that on failure 
     *the caller can print an error message. Null terminate to 
     *handle case where string lenth > pts_namesz 
     * */  
  
    strncpy(pts_name “/dev/ptmx“ pts_namesz);  
    pts_name[pts_namesz - 1] = ‘\0‘;  
  
    fdm = posix_openpt(O_RDWR);  
    if (fdm < 0)  
        return OPEN_PTY_ERR;  
    if (grantpt(fdm) < 0)  
    {  
        close(fdm);  
        return GRANT_PTY_ERR;  
    }  
    if (unlockpt(fdm) < 0)  
    {  
        close(fdm);  
        return UNLOCK_PTY_ERR;  
    }  
    //if ((ptr = ptsname(fdm)) == NULL)  
    if ((ptr = ptsname(fdm)) == NULL)  
    {  
        close(fdm);  
        return GET_PTYS_NAME_ERR;  
    }  
    strncpy(pts_name ptr pts_namesz);  
    pts_name[pts_namesz - 1] = ‘\0‘;  
  
    return fdm;  
  
}  
  
int ptys_open(char *pts_name)  
{  
    int fds;  
    if ((fds = open(pts_name O_RDWR|O_NONBLOCK|O_CREAT)) < 0)  
        return OPEN_PTYS_ERR;  
    return fds;  
}  
  
int pty_fork(int *ptrfdm char *slave_name int slave_namesz  
        const struct termios *slave_termiors  
        const struct winsize *slave_winsize pid_t *ppid)  
{  
    int fdm fds;  
    pid_t pid;  
    char pts_name[20];  
  
    if ((fdm = ptym_open(pts_name sizeof(pts_name))) < 0)  
    {  
        return fdm;  
    }  
  
    if (slave_name != NULL)  
    {  
        strncpy(slave_name pts_name slave_namesz);  
        slave_name[slave_namesz - 1] = ‘\0‘;  
    }  
  
    if ((pid = fork()) < 0)  
    {  
        return FORK_ERR;  
    }  
    else if (pid == 0)  
    {  
        if (setsid() < 0)  
        {  
            return SETSID_ERR;  
        }  
//printf(“112222pts_name = %s\n“ pts_name);

        if ((fds = ptys_open(pts_name)) < 0)  
        {  
         printf(“1122errr\n“);
fflush(NULL);
            close(fdm);  
            return OPEN_PTYS_ERR;  
        }  
//printf(“fds = %d\n“fds);
//fflush(NULL);
#ifdef TIOCSCTTY   
        if (ioctl(fds TIOCSCTTY (char *) 0) < 0)  
            return TIOCSCTTY_ERR;  
#endif   
//      if (slave_termiors != NULL)   
//      {   
//          if (tcsetattr(fds TCSANOW slave_termiors) < 0)   
//              return INIT_ATTR_ERR;   
//      }   
//      if (slave_winsize != NULL)   
//      {   
//          if (ioctl(fds TIOCSWINSZ slave_winsize) < 0)   
//              return INIT_ATTR_ERR;   
//      }   

#if 0
close(0);
close(1);
close(2);
#endif
  #if 0
       if (dup2(fds STDIN_FILENO) != STDIN_FILENO)  
           return DUP_STDIN_ERR;  
        if (dup2(fds STDOUT_FILENO) != STDOUT_FILENO)  
            return DUP_STDOUT_ERR;  
        if (dup2(fds STDERR_FILENO) != STDERR_FILENO)  
            return DUP_STDERR_ERR;  

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件        635  2013-01-28 08:57  telnet\Makefile

     文件        635  2013-01-28 08:43  telnet\Makefile.bak

     文件       3858  2013-01-28 10:21  telnet\pty_fun.c

     文件       1421  2013-01-28 08:48  telnet\pty_fun.h

     文件        765  2013-01-28 10:03  telnet\telnet.SearchResults

     文件      20544  2013-06-25 11:46  telnet\telnet.WK3

     文件      10787  2013-01-28 08:47  telnet\telnetserver.c

     文件      24518  2013-01-28 10:21  telnet\tlnet

     目录          0  2013-10-24 14:49  telnet

----------- ---------  ---------- -----  ----

                63163                    9


评论

共有 条评论