c++网络编程

C++ network programming

本文关键字:网络编程 c++      更新时间:2023-10-16

我想扩展我在c++方面的知识,所以我要学的第一件事是网络编程。

我想做一个IRC聊天机器人(希望能教我套接字编程和网络主题),但我不知道从哪里开始。如果有人能给我解释一下IRC机器人是如何工作的,以及如何制作它们,并指导我一些学习资源,那就太好了。简单的片段也会很棒…

编辑:

忘了说我用的是ubuntu,所以windows方式不是一个选项

要理解套接字并正确使用它们,需要套接字圣经:

W。Richard Stevens, Unix网络编程,卷1:套接字网络API(第三版)

在你坐下来写一行套接字代码之前,你一定要有这本书。别忘了带它出门。真的。$35起,在Amazon使用。

EDIT: OP询问其他卷。下面是另外两个:

W. Richard Stevens, UNIX网络编程,第2卷:进程间通信(2版)
W.理查德·史蒂文斯,TCP/IP图解,Vol. 1: The协议

它们具有史蒂文斯一贯和期望的高品质。我不知道他整合这些书的计划是什么

asio是(在我看来)在现代c++中编写独立于平台的网络代码的事实上的标准。

我的建议:

  1. 我首先会用易于编写、功能强大的高级语言(如python)编写bot。熟悉使用网络工具、IRC协议等。

  2. 了解底层的套接字和网络。对于Unix,我建议您看一下Unix Network Programming。

  3. 用c++写你的bot !犯错误,改正错误,坚持下去。

学习C/c++套接字编程的最佳指南必须是Beej的《网络编程指南》。它通过示例和详细描述,介绍了您需要知道的所有步骤。据我所知,这个网站唯一缺少的信息是IPv6多播。

从一个简单的客户机-服务器示例开始。使用Qt框架非常容易。例如:

server.cpp:

#include <QTcpSocket>
#include <QTcpServer>
int main()
{
    QTcpServer *tcpServer = new QTcpServer(); //creates TCP-based server
    tcpServer->listen(QHostAddress("172.16.254.1"),5300); //listen on your IP adress, port 5300
    while ( tcpServer->isListening() )  //while server is listening
    {   
        QTcpSocket* tcpSocket; //define TCP-based socket
        tcpServer->waitForNewConnection(); //server waits for connection
        if ( (tcpSocket = tcpServer->nextPendingConnection()) ) //if there are connections to be processsed 
        { 
                tcpSocket->write("hello",6); //write "hello" to the socket, client is connected to
                tcpSocket->flush();    
        }
    }
}

client.cpp:

#include <QDebug>
#include <QTcpSocket>
int main()
{
    QTcpSocket *tcpSocket = new QTcpSocket(); //create TCP-based socket
    tcpSocket->connectToHost("172.16.254.1",5300); //connect socket to server
    tcpSocket->waitForConnected(); //wait 
    tcpSocket->waitForReadyRead(); 
    qDebug() << tcpSocket->readAll();    
}

你所需要做的就是在一个终端窗口中运行第一个程序,在另一个终端窗口中运行第二个程序。

您可以在这里找到更多Qt网络示例

我知道这很老了有本书叫

《Beej使用Internet socket进行网络编程指南》

Beej提供的所有内容都是100%免费访问的,这是一个网站,可以去学习网络编程的基础知识。

https://beej.us/guide/bgnet/

我仍然推荐阅读这里提供的书籍,因为它们提供了关于套接字和TCP/IP协议的相当可靠的信息。

  • Unix Network Programming: The Sockets Networking Api - by W. Richard Stevens

  • TCP/IP图解,第1卷:协议(Addison-Wesley专业计算系列)TCP/IP图解,第1卷:协议(Addison-Wesley专业计算系列)W. Richard Stevens

  • UNIX网络编程,卷2:进程间通信,第二版UNIX网络编程,卷2:进程间通信,第二版,作者:W. Richard Stevens

  • TCP/IP说明,卷1:协议(Addison-Wesley专业计算系列)第二版文/凯文·福尔(作者)、w·史蒂文斯(作者)

  • TCP/IP指南:一个全面的,图解的互联网协议参考第1版作者:Charles M. Kozierok


我不是一个网络程序员或软件开发人员,我唯一的兴趣是网络和复制虚幻引擎的游戏开发只有。请不要给我发邮件或询问有关网络的问题。