本文整理汇总了C++中QTcpSocket::bind方法的典型用法代码示例。如果您正苦于以下问题:C++ QTcpSocket::bind方法的具体用法?C++ QTcpSocket::bind怎么用?C++ QTcpSocket::bind使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QTcpSocket
的用法示例。
在下文中一共展示了QTcpSocket::bind方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main(int argc, char* argv[])
{
core::system::initHook();
try
{
initializeLang();
if (useChromiumDevtools())
{
// use QTcpSocket to find an open port. this is unfortunately a bit racey
// but AFAICS there isn't a better solution for port selection
QByteArray port;
QTcpSocket* pSocket = new QTcpSocket();
if (pSocket->bind())
{
quint16 port = pSocket->localPort();
desktopInfo().setChromiumDevtoolsPort(port);
core::system::setenv("QTWEBENGINE_REMOTE_DEBUGGING", safe_convert::numberToString(port));
pSocket->close();
}
}
// initialize log
core::system::initializeLog("rdesktop",
core::system::kLogLevelWarning,
desktop::userLogPath());
// ignore SIGPIPE
Error error = core::system::ignoreSignal(core::system::SigPipe);
if (error)
LOG_ERROR(error);
// attempt to remove stale lockfiles, as they can impede
// application startup
error = removeStaleOptionsLockfile();
if (error)
LOG_ERROR(error);
// set application attributes
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
// prepare command line arguments
static std::vector<char*> arguments(argv, argv + argc);
// enable viewport meta (allows us to control / restrict
// certain touch gestures)
static char enableViewport[] = "--enable-viewport";
arguments.push_back(enableViewport);
#ifndef NDEBUG
// disable web security for development builds (so we can
// get access to sourcemaps)
static char disableWebSecurity[] = "--disable-web-security";
arguments.push_back(disableWebSecurity);
#endif
// disable chromium renderer accessibility by default (it can cause
// slowdown when used in conjunction with some applications; see e.g.
// https://github.com/rstudio/rstudio/issues/1990)
if (core::system::getenv("RSTUDIO_ACCESSIBILITY").empty())
{
static char disableRendererAccessibility[] = "--disable-renderer-accessibility";
arguments.push_back(disableRendererAccessibility);
}
#ifdef Q_OS_LINUX
// workaround for Qt 5.10.1 bug "Could not find QtWebEngineProcess"
// https://bugreports.qt.io/browse/QTBUG-67023
// https://bugreports.qt.io/browse/QTBUG-66346
static char noSandbox[] = "--no-sandbox";
arguments.push_back(noSandbox);
#endif
#ifdef Q_OS_MAC
// don't prefer compositing to LCD text rendering. when enabled, this causes the compositor to
// be used too aggressively on Retina displays on macOS, with the side effect that the
// scrollbar doesn't auto-hide because a compositor layer is present.
// https://github.com/rstudio/rstudio/issues/1953
static char disableCompositorPref[] = "--disable-prefer-compositing-to-lcd-text";
arguments.push_back(disableCompositorPref);
// disable gpu rasterization for certain display configurations.
// this works around some of the rendering issues seen with RStudio.
//
// https://bugs.chromium.org/p/chromium/issues/detail?id=773705
// https://github.com/rstudio/rstudio/issues/2093
//
// because the issue seems to only affect certain video cards on macOS
// High Sierra, we scope that change to that particular configuration
// for now (we can expand this list if more users report issues)
core::Version macVersion(QSysInfo::productVersion().toStdString());
if (macVersion.versionMajor() == 10 &&
macVersion.versionMinor() == 13)
{
core::system::ProcessResult processResult;
core::system::runCommand(
"/usr/sbin/system_profiler SPDisplaysDataType",
core::system::ProcessOptions(),
&processResult);
//.........这里部分代码省略.........
示例2: main
int main(int argc, char *argv[])
{
int debugMode = DEBUGMODE;
if(debugMode)
{
} else {
qInstallMessageHandler(myMessageOutputDisable);
}
QDEBUG() << "number of arguments:" << argc;
QStringList args;
QDEBUGVAR(RAND_MAX);
if(argc > 1) {
QCoreApplication a(argc, argv);
args = a.arguments();
QDEBUGVAR(args);
qRegisterMetaType<Packet>();
QDEBUG() << "Running command line mode.";
Packet sendPacket;
sendPacket.init();
QString outBuilder;
QTextStream o(&outBuilder);
QTextStream out(stdout);
QDate vDate = QDate::fromString(QString(__DATE__).simplified(), "MMM d yyyy");
QCoreApplication::setApplicationName("Packet Sender");
QCoreApplication::setApplicationVersion("version " + vDate.toString("yyyy-MM-dd"));
QCommandLineParser parser;
parser.setApplicationDescription("Packet Sender is a Network TCP and UDP Test Utility by Dan Nagle\nSee http://PacketSender.com/ for more information.");
parser.addHelpOption();
parser.addVersionOption();
// A boolean option with a single name (-p)
QCommandLineOption quietOption(QStringList() << "q" << "quiet", "Quiet mode. Only output received data.");
parser.addOption(quietOption);
QCommandLineOption hexOption(QStringList() << "x" << "hex", "Parse data as hex (default).");
parser.addOption(hexOption);
QCommandLineOption asciiOption(QStringList() << "a" << "ascii", "Parse data as mixed-ascii (like the GUI).");
parser.addOption(asciiOption);
QCommandLineOption pureAsciiOption(QStringList() << "A" << "ASCII", "Parse data as pure ascii (no \\xx translation).");
parser.addOption(pureAsciiOption);
// An option with a value
QCommandLineOption waitOption(QStringList() << "w" << "wait",
"Wait up to <milliseconds> for a response after sending. Zero means do not wait (Default).",
"milliseconds");
parser.addOption(waitOption);
// An option with a value
QCommandLineOption fileOption(QStringList() << "f" << "file",
"Send contents of specified path. Max 1024 for UDP, 10 MiB for TCP.",
"path");
parser.addOption(fileOption);
// An option with a value
QCommandLineOption bindPortOption(QStringList() << "b" << "bind",
"Bind port. Default is 0 (dynamic).",
"port");
parser.addOption(bindPortOption);
QCommandLineOption tcpOption(QStringList() << "t" << "tcp", "Send TCP (default).");
parser.addOption(tcpOption);
// A boolean option with multiple names (-f, --force)
QCommandLineOption udpOption(QStringList() << "u" << "udp", "Send UDP.");
parser.addOption(udpOption);
// An option with a value
QCommandLineOption nameOption(QStringList() << "n" << "name",
"Send previously saved packet named <name>. Other options overrides saved packet parameters.",
"name");
parser.addOption(nameOption);
parser.addPositionalArgument("address", "Destination address. Optional for saved packet.");
parser.addPositionalArgument("port", "Destination port. Optional for saved packet.");
parser.addPositionalArgument("data", "Data to send. Optional for saved packet.");
// Process the actual command line arguments given by the user
//.........这里部分代码省略.........
示例3: main
//.........这里部分代码省略.........
}
#endif
#if defined (Q_OS_LINUX) && QT_VERSION <= 0x050800
QByteArray proxy_env;
proxy_env = qgetenv("http_proxy");
// If http_proxy environment is defined in linux then proxy server is configured.
if (!proxy_env.isEmpty()) {
QNetworkProxy::setApplicationProxy(QNetworkProxy());
}
#endif
// Display the spash screen
QSplashScreen *splash = new QSplashScreen();
splash->setPixmap(QPixmap(":/splash.png"));
splash->show();
app.processEvents(QEventLoop::AllEvents);
quint16 port = 0L;
// Find an unused port number. Essentially, we're just reserving one
// here that Flask will use when we start up the server.
// In order to use the socket, we need to free this socket ASAP.
// Hence - putting this code in a code block so the scope of the socket
// variable vanishes to make that socket available.
{
#if QT_VERSION >= 0x050000
QTcpSocket socket;
#if QT_VERSION >= 0x050900
socket.setProxy(QNetworkProxy::NoProxy);
#endif
socket.bind(0, QTcpSocket::ShareAddress);
#else
QUdpSocket socket;
socket.bind(0, QUdpSocket::ShareAddress);
#endif
port = socket.localPort();
}
// Generate a random key to authenticate the client to the server
QString key = QUuid::createUuid().toString();
key = key.mid(1, key.length() - 2);
// Generate the filename for the log
logFileName = homeDir + (QString("/.%1.%2.log").arg(PGA_APP_NAME).arg(exeHash)).remove(" ");
// Start the tray service
TrayIcon *trayicon = new TrayIcon(logFileName);
if (!trayicon->Init())
{
QString error = QString(QWidget::tr("An error occurred initialising the tray icon"));
QMessageBox::critical(NULL, QString(QWidget::tr("Fatal Error")), error);
exit(1);
}
// Fire up the webserver
Server *server;
bool done = false;
while (done != true)
{