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

📄 socktest.cpp

📁 伯克利做的SFTP安全文件传输协议
💻 CPP
字号:
// socktest.cc// test program for sockets// copyright SafeTP Development Group, Inc., 2000  Terms of use are as specified in license.txt#include "sockutil.h"    // util#include "socket.h"      // sockets api#include "exc.h"         // xBase#include <stdlib.h>      // atoi#include <stdio.h>       // printfvoid testResolve(char const *hostname){  printf("resolving \"%s\": ", hostname);  try {    printf("%s\n", formatAddress(      resolveHostName(hostname)).pcharc());  }  catch (xResolveFailure &x) {    printf("%s\n",      socketErrString("failed to resolve").pcharc());  }}int doit(int argc, char *argv[]){  socket_lib_init();  // test byte ordering  {    bool big = isBigEndian();    printf("isBigEndian: %d\n", big);#   ifdef SAFETP_LITTLE_ENDIAN      printf("agrees with SAFETP_LITTLE_ENDIAN: %d\n", !big);#   endif#   ifdef SAFETP_BIG_ENDIAN      printf("agrees with SAFETP_BIG_ENDIAN: %d\n", big);#   endif    #ifndef __ALPHA__    unsigned long L = htonl(0x12345678);    printf("htonl(0x12345678) = 0x%lX\n", L);    printf("ntohl(0x%lX) = 0x%lX\n", L, (long)ntohl(L));    unsigned short S = htons(0x1234);    printf("htons(0x1234) = 0x%lX\n", (long)S);    printf("ntohs(0x%lX) = 0x%lX\n", (long)S, (long)ntohs(S));    printf("'\\x01\\x00' == 0x0100 test ");    if ( ('\x01\x00' == 0x0100) == big ) {      printf("works\n");    }    else {      printf("doesn't work\n");    }    #endif // !__ALPHA__  }  // test name resolution  testResolve("localhost");  testResolve("11.22.33.44");  if (argc <= 1) {    // server    // listen to a port    SOCKET listener = listen_socket(PORT_ANY);    {      sockaddr_in addr;      getSockName(listener, addr);      printf("server listening on %s\n",             (char const*)formatAddress(addr));    }    // accept a connection    SOCKET socket = accept(listener, NULL, NULL);    printSocketInfo(socket);    // close listener    //close_socket(listener);    for(;;) {      // use select to wait for action; artificially select on      // listener, even though a connection is not expected, just      // to test select() with 2 sockets      SocketSet sockset;      sockset.add(socket);      sockset.add(listener);      sockset.blockUntilReadable();      // socket action?      if (sockset.contains(socket)) {        // test for socket closure        if (isClosed(socket)) {          break;        }        // read a character        char c = recvChar(socket);        // echo it        printf("%c", c);      }      // must be listen action      else if (sockset.contains(listener)) {        printf("action on listen socket...?\n");      }      else {        printf("select() returned with no sockets..?\n");      }    }  }  else {       // client    // connect to server    SOCKET socket = connect_socket(INADDR_LOOPBACK, atoi(argv[1]));    // send some stuff    sendAllString(socket, "This is the string I am sending.\n");    // close    close_socket(socket);  }  return 0;}int main(int argc, char *argv[]){  try {    return doit(argc, argv);  }  catch (xBase &x) {    return printf("exception caught: %s\n", x.why());  }}

⌨️ 快捷键说明

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