tsinread.c
来自「《CODE READING》配套书源代码 《CODE READING》配套书源」· C语言 代码 · 共 99 行
C
99 行
// tsinread.cc. Test for -*- 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 <sockinet.h>#include <unistd.h>static void process_input (iosockinet& s);int main(){ sockinetbuf sin (sockbuf::sock_stream); sin.bind(); cout << "localhost = " << sin.localhost() << endl << "localport = " << sin.localport() << endl; sin.listen(); for(;;) { { iosockinet s (sin.accept()); process_input(s); } // lets use select to find out whether a socket is ready if (!sin.is_readready(2)) { // the socket is not ready. Let us sleep for 1 sec. sleep(1); } iosockinet s2 (sin.accept()); process_input(s2); break; // let us get out of here forever } return 0;}static void process_input(iosockinet& sio){ char buf[256]; char* p = buf; sio >> p; while (*p) { if (*p != '%') cout << *p; else switch (*++p) { case 'd': { int i; sio >> i; cout << i << ' '; sio << "INT "; break; } case 'f': { double d; sio >> d; cout << d << ' '; sio << "DOUBLE "; break; } case 's': { char str[256]; sio >> str; cout << str << ' '; sio << "STRING "; break; } case 'c': { char c; sio >> c; cout << c << ' '; sio << "CHAR "; break; } case '%': cout << '%' << ' '; break; default: cout << '%' << *p; } p++; } sio << "received" << endl; cout << endl;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?