设为首页 加入收藏

TOP

Telnet模拟系统(Linux c)(一)
2019-01-25 12:08:36 】 浏览:501
Tags:Telnet 模拟 系统 Linux

3章详细设计和实现

3.1相关技术

    1TCP编程,主要包括socket()函数、bind()函数、listen()函数、recv()函数、send()函数以及客户端的connect()函数。

  2C语言中对结构体的操作,和对字符串的比较

  3)对文件的读写操作

  4popen调用shell

 

3.2开发工具和运行环境

    本系统在ubantu 16.4 LTS环境下开发,所用的工具为vi编辑器和gedit编辑器,以及gcc编译工具。

 

 

3.3主要功能的源码

3.3.1服务器端socket的建立

    if ( (sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0 )  //创建socket

        printf( "socket failed" );

 

    /* 设置端口快速重用*/

    optval = 1;

    if ( setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, (void *)&optval, sizeof(int)) < 0 )

        printf( "setsockopt failed" );

 

    server_addr.sin_family = AF_INET;

    server_addr.sin_port = htons( PORT );

    server_addr.sin_addr.s_addr = htonl( INADDR_ANY );

 

   if ( bind(sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr_in)) < 0 ) //绑定ip和端口号

        printf( "bind failed" );

 

    if ( listen(sockfd, MAX_LISTEN) < 0 ) //建立监听

        printf( "listen failed" );

 

3.3.2对客户端的发送信息进行处理

while ( 1 ) {

    if ( (connfd = accept(sockfd, (struct sockaddr*)&client_addr, &client_size)) < 0 ) //响应客户端请求

            printf( "accept failed" );

        printf( "Server accept a client: ip = %s\n",inet_ntoa(client_addr.sin_addr) ); //打印客户端ip

        

        /* 创建子进程处理客户端请求 */

        if ( (pid = fork()) == 0 ) {

            while ( 1 ) {

                /* 接受客户端信息 */

                if ( (recv_bits = recv(connfd, buffer, BUF_SIZE, 0)) < 0 )

                    printf( "recv failed" );

 

                /* 去除最后一个字符 */

                buffer[recv_bits - 1] = '\0';

 

                /* 用户名鉴定 */

                if ( recv_type == USERNAME ) {

                    if ( strcmp(name, buffer) != 0 ) {

     &nb

首页 上一页 1 2 3 4 5 6 下一页 尾页 1/6/6
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇c语言----<项目>_小游戏<.. 下一篇C语言实现邻接矩阵创建无向图&图..

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目