• 大小: 56KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: 其他
  • 标签: IRC  server  

资源简介

本资源实现了一个简单的IRC server,支持客户端和服务器端的通信

资源截图

代码片段和文件信息

/* $begin csapp.c */
#include “csapp.h“

/************************** 
 * Error-handling functions
 **************************/
/* $begin errorfuns */
/* $begin unixerror */
void unix_error(char *msg) /* unix-style error */
{
    fprintf(stderr “%s: %s\n“ msg strerror(errno));
    exit(0);
}
/* $end unixerror */

void posix_error(int code char *msg) /* posix-style error */
{
    fprintf(stderr “%s: %s\n“ msg strerror(code));
    exit(0);
}

void dns_error(char *msg) /* dns-style error */
{
    fprintf(stderr “%s: DNS error %d\n“ msg h_errno);
    exit(0);
}

void app_error(char *msg) /* application error */
{
    fprintf(stderr “%s\n“ msg);
    exit(0);
}
/* $end errorfuns */

/*********************************************
 * Wrappers for Unix process control functions
 ********************************************/

/* $begin forkwrapper */
pid_t Fork(void) 
{
    pid_t pid;

    if ((pid = fork()) < 0)
unix_error(“Fork error“);
    return pid;
}
/* $end forkwrapper */

void Execve(const char *filename char *const argv[] char *const envp[]) 
{
    if (execve(filename argv envp) < 0)
unix_error(“Execve error“);
}

/* $begin wait */
pid_t Wait(int *status) 
{
    pid_t pid;

    if ((pid  = wait(status)) < 0)
unix_error(“Wait error“);
    return pid;
}
/* $end wait */

pid_t Waitpid(pid_t pid int *iptr int options) 
{
    pid_t retpid;

    if ((retpid  = waitpid(pid iptr options)) < 0) 
unix_error(“Waitpid error“);
    return(retpid);
}

/* $begin kill */
void Kill(pid_t pid int signum) 
{
    int rc;

    if ((rc = kill(pid signum)) < 0)
unix_error(“Kill error“);
}
/* $end kill */

void Pause() 
{
    (void)pause();
    return;
}

unsigned int Sleep(unsigned int secs) 
{
    unsigned int rc;

    if ((rc = sleep(secs)) < 0)
unix_error(“Sleep error“);
    return rc;
}

unsigned int Alarm(unsigned int seconds) {
    return alarm(seconds);
}
 
void Setpgid(pid_t pid pid_t pgid) {
    int rc;

    if ((rc = setpgid(pid pgid)) < 0)
unix_error(“Setpgid error“);
    return;
}

pid_t Getpgrp(void) {
    return getpgrp();
}

/************************************
 * Wrappers for Unix signal functions 
 ***********************************/

/* $begin sigaction */
handler_t *Signal(int signum handler_t *handler) 
{
    struct sigaction action old_action;

    action.sa_handler = handler;  
    sigemptyset(&action.sa_mask); /* block sigs of type being handled */
    action.sa_flags = SA_RESTART; /* restart syscalls if possible */

    if (sigaction(signum &action &old_action) < 0)
unix_error(“Signal error“);
    return (old_action.sa_handler);
}
/* $end sigaction */

void Sigprocmask(int how const sigset_t *set sigset_t *oldset)
{
    if (sigprocmask(how set oldset) < 0)
unix_error(“Sigprocmask error“);
    return;
}

void Sigemptyset(sigset_t *set)
{
    if (sigemptyset(set) < 0)
unix_error(“Sigemptyset error“);
    return;
}

void Sigfillset(sigset_t *set)

    if (sigfillset(set) < 0)
unix_error(“Sigfillset error

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2011-04-11 09:31  simple IRC server\
     文件       17744  2011-03-24 21:14  simple IRC server\csapp.c
     文件       17744  2011-03-24 21:14  simple IRC server\csapp.c~
     文件        5575  2011-03-15 18:54  simple IRC server\csapp.h
     文件       12064  2011-04-11 09:24  simple IRC server\csapp.o
     文件         356  2011-03-21 16:09  simple IRC server\Makefile
     文件         348  2011-03-20 15:01  simple IRC server\Makefile~
     文件          30  2011-03-15 18:54  simple IRC server\node1.conf
     文件         729  2011-03-15 18:54  simple IRC server\rtgrading.c
     文件        1317  2011-03-15 18:54  simple IRC server\rtgrading.h
     文件        5088  2011-03-15 18:54  simple IRC server\rtlib.c
     文件        3689  2011-03-15 18:54  simple IRC server\rtlib.h
     文件        4728  2011-04-11 09:24  simple IRC server\rtlib.o
     文件       33831  2011-04-11 09:24  simple IRC server\sircd
     文件       24498  2011-04-11 09:24  simple IRC server\sircd.c
     文件       24521  2011-04-11 09:24  simple IRC server\sircd.c~
     文件         806  2011-04-10 10:03  simple IRC server\sircd.h
     文件         864  2011-04-08 20:10  simple IRC server\sircd.h~
     文件       12152  2011-04-11 09:24  simple IRC server\sircd.o

评论

共有 条评论