📄 tsinread.c
字号:
// 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -