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

📄 stream_client.cxx

📁 这是国外的resip协议栈
💻 CXX
字号:
#include <Netxx/Stream.h>#include <Netxx/Timeout.h>#include <iostream>#include <fstream>#include <sstream>#include <stdexcept>#include <exception>#include <cstring>#include <cstdlib>int main (int argc, char *argv[]) {    if (argc != 4) {	std::cerr << "Usage: " << argv[0] << " address file size\n";	return 1;    }    try {	Netxx::Stream client(argv[1], 0, Netxx::Timeout(2));	std::ifstream file(argv[2]);	if (!file) throw std::runtime_error("failed to open input file");	Netxx::size_type buffer_size = std::atoi(argv[3]);	char *buffer = new char[buffer_size];	char *return_buffer = new char[buffer_size];	file.read(buffer, buffer_size);	if (!file || file.gcount() != buffer_size) {	    std::ostringstream error;	    error << "read from file did not give the correct byte count, ";	    error << "gcount said: " << file.gcount();	    error << " but I expected: " << buffer_size;	    throw std::runtime_error(error.str());	}	if (client.write(buffer, buffer_size) != buffer_size)	    throw std::runtime_error("write to server did not send the correct byte count");	Netxx::signed_size_type bytes_read=0, buffer_aval=buffer_size;	char *bufptr = return_buffer;	while (buffer_aval) {	    if ( (bytes_read = client.read(bufptr, buffer_aval)) <= 0)		throw std::runtime_error("read from server was less than or equal to 0");	    bufptr += bytes_read;	    buffer_aval -= bytes_read;	}	if (std::memcmp(buffer, return_buffer, buffer_size) != 0)	    throw std::runtime_error("buffer mismatch");    } catch (std::exception &e) {	std::cerr << e.what() << std::endl;	return 1;    } catch ( ... ) {	std::cerr << "an unknown exception was caught" << std::endl;	return 1;    }    return 0;}

⌨️ 快捷键说明

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