Giter VIP home page Giter VIP logo

hgoldfish / qtnetworkng Goto Github PK

View Code? Open in Web Editor NEW
206.0 206.0 51.0 8.82 MB

QtNetwork Next Generation. A coroutine based network framework for Qt/C++, with more simpler API than boost::asio.

License: GNU Lesser General Public License v3.0

C++ 5.78% C 53.17% QMake 0.04% Assembly 11.04% Python 0.01% CMake 0.40% Makefile 11.88% Roff 15.87% Shell 1.65% M4 0.11% Batchfile 0.05%
asio c-plus-plus coroutine crypto http http-client http-proxy http-server kcp kcp-socks kcptun libev libressl network openssl qt qtnetwork socks5 socks5-proxy tcp

qtnetworkng's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

qtnetworkng's Issues

将sslsocket设置为非阻塞模式不起作用

我将sslsocket设置为非阻塞模式不起作用

代码如下:

qtng::Socket::SocketOption option;
QVariant value(qtng::Socket::NonBlockingSocketOption);
pSslSocket->setOption(option, value);

请大佬有空的时候帮忙看看是不是用法不对

I failed to compile under win10.

I failed to compile under win10.

The error is “The error is "eventloop_win.obj:-1: error: LNK2019: Unresolved external symbol __imp_TranslateMessage, which is in the function "public: virtual void __cdecl qtng::WinEventLoopCoroutinePrivate::run(void)" (?run@WinEventLoopCoroutinePrivate@qtng @@UEAAXXZ) is quoted in ”.

My QT version is 5.13.1, and the MSVC version is 2017 64bit. The minimal project inherits Qmainwindow, and then integrates Qtnetworkng.I did not implement my own function or code. It can compile successfully under Linux, but it fails under Win10.

请指点编译问题

作者您好!
1、我自己派生一个自己的handler:
class HaoYuRequestHandler : public BaseRequestHandler
{
public:
HaoYuRequestHandler();
virtual ~HaoYuRequestHandler();
protected:
// virtual bool setup();
virtual void handle();
// virtual void finish();
public:
virtual void OnMsg(const char *pMsg, int nMsgLen);
private:
void ProcessData(QByteArray &data);
};

2、在void handle();这个函数里面,循环读取客户端发来的数据,并且处理:
void HaoYuRequestHandler::handle()

{
QByteArray data;
bool bOK(false);
while (!server->stopped->isSet()) {
data.append(request->readall(&bOK));
if (Socket::NoError != request->error()) {
throw CoroutineExitException();
}
ProcessData(data);
}
}
3、main()函数中:
TcpServer tcpserver(nAddr, nPort);
tcpserver.start();

4、在编译的时候,会报错:
In member function ‘virtual void HaoYuRequestHandler::handle()’: use of deleted function ‘qtng::CoroutineExitException::CoroutineExitException(qtng::CoroutineExitException&&)’
throw CoroutineExitException();

我这里throw异常的本意是结束循环读取,通过抛出异常的方式,让上层的函数把当前的requst关闭掉,但这样在ubuntu 20.04中无法编译通过。
请给出解决方法,谢谢!

vc 下编译不通过

在win7 vc平台编译不过 缺少ev头文件,还有编译也出错 无法打开文件“debug\jump_i386_ms_pe_gas.obj”

win10下sslsocket有可能会连不上ubuntu 18.04 linux服务器

win10下使用sslsocket客户端去连接ubuntu 18.04 服务器(虚拟机)有可能会连不上。但是将同一套代码的客户端和服务器都部署在同一台win10机器上是能客户端是能连上服务器的。将同一套代码的客户端和服务器都部署在同一台ubuntu 18.04机器上也能连上。以上描述都是指的TCP连接

后来我尝试追踪,发现win10下sslsocket客户端调用WSAConnect返回值是WSAEWOULDBLOCK,微软帮助文档上说:“对于非阻塞套接字,连接尝试无法立即完成。在这种情况下, WSAConnect将返回 SOCKET_ERROR,而 WSAGetLastError将返回 WSAEWOULDBLOCK,可以使用 select通过检查套接字是否可写来确定连接请求的完成”。也就是说WSAEWOULDBLOCK是一个正常返回值,并不一定代表出错,您这个位置的处理可能有问题。

使用微软提供的思路我修改了一下代码,win10客户端就能连上ubuntu 18.04 服务器,但是我写的代码不规范,不好意思贴出来,您有时间的时候可以修复一下这个问题。

附:微软帮助文档链接:https://docs.microsoft.com/zh-hk/windows/win32/api/winsock2/nf-winsock2-wsaconnect
附:CSDN网友类似博文:https://blog.csdn.net/nyist327/article/details/45918769

KCP测试问题

尊敬的作者,您好!
库写得很棒,代码非常精简即可完成复杂功能!
在测试KCP部分的时候,我遇到下面的现象:
一、kcptun
此部分工作正常。

   二、tests下面的test_kcp.cpp
          1、将 void kcpServer()中的原语句修改一下可以正常编译:
                    QSharedPointer<KcpSocket> r = s.accept(); -----> QSharedPointer<KcpSocket> r( s.accept() );
          2、生成可执行文件test_kcp,调试执行test_kcp,无参数,进入server模式,执行QSharedPointer<KcpSocket> r( s.accept() );
                后进入等待;
          3、执行客户端,命令行:
               ./test_kcp 127.0.0.1 ./CMakeCache.txt   
               显示内容如下:
               read 18509
               read 0
               "client sha256= 5a4e2cc98b47dc471d890e8963f2cdcc5132c6362263b6765ca1ecbf770e152e"

              而服务器端依旧停留在QSharedPointer<KcpSocket> r( s.accept() );,没有执行下去。
              客户端运行命令:./test_kcp 192.168.2.209  ./CMakeCache.txt   ,现象依旧。

    三、用框架方式,编译一个server:
           kcpserver<QtL2Handler> server(strHost, nPort);
           server.start();
           startQtLoop();
            
           现象同二,即服务端阻塞在accept()函数里。

    不知我哪里做得不对,还请指点一二。
    非常感谢!

coroutinegroup的一个问题

你好,我写了一个并发的请求的客户端(用的是go,直接在for循环中创建goroutine来发起连接)来测试README里的socket server时,发现coroutinegroup里所有的cotoutine都是在没有新的连接过来时才执行的。这就导致了如果我的客户端到200个左右的时候,分配空间失败了,抛出了一个bad_alloc的异常。所以,我想请教以下,如何能避免这个问题?谢谢。

error: LNK2019 无法解析qtng::FileLike::~FileLike

qtnetworkng.lib(socket_utils.obj):-1: error: LNK2019: 无法解析的外部符号 "public: virtual __thiscall qtng::FileLike::~FileLike(void)" (??1FileLike@qtng@@UAE@XZ),该符号在函数 "public: virtual __thiscall qtng::SocketLike::~SocketLike(void)" (??1SocketLike@qtng@@UAE@XZ) 中被引用

环境:VS2017 + QT5.13.1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.