⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 echo.c

📁 《CODE READING》配套书源代码 《CODE READING》配套书源代码
💻 C
字号:
// echo.C -*- C++ -*- socket library// Copyright (C) 1992-1996 Gnanasekaran Swaminathan <gs4t@virginia.edu>//// Permission is granted to use at your own risk and distribute this software// in source and  binary forms provided  the above copyright notice and  this// paragraph are  preserved on all copies.  This software is provided "as is"// with no express or implied warranty.//// Version: 12Jan97 1.11#include <config.h>#include <echo.h>#include <Fork.h>#include <stdlib.h>void echo::echobuf::serve_clients (int portno){  if (protocol_name ()) {    if (portno < 0)      sockinetbuf::bind ((unsigned long) INADDR_ANY, "echo", protocol_name ());    else if (portno <= 1024) {      sockinetbuf::bind ();      cout << "Host: " << localhost () << endl           << "Port: " << localport () << endl;    } else      sockinetbuf::bind ((unsigned long) INADDR_ANY, portno);    // act as a server now    listen (sockbuf::somaxconn);    // commit suicide when we receive SIGTERM    Fork::suicide_signal (SIGTERM);    for (;;) {      sockbuf s = accept ();        Fork f (1, 1); // kill my children when I get terminated.	if (f.is_child ()) {	  char buf [1024];	  int  rcnt;	  while ((rcnt = s.read (buf, 1024)) > 0)	    while (rcnt != 0) {	      int wcnt = s.write (buf, rcnt);	      if (wcnt == -1) throw sockerr (errno);	      rcnt -= wcnt;	    }	  sleep (300);	  exit (0);	}    }  }}  

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -