我想扩展我在C++方面的知识,所以我要做的第一件事就是网络编程。
我想制作一个 IRC 机器人(希望它能教我套接字编程和网络主题),但我不知道从哪里开始。如果有人能向我解释 IRC 机器人如何工作以及如何制作它们,并指导我获得一些学习资源,那就太好了。简单的片段也会很棒......
编辑:
忘了说我用的是ubuntu,所以windows方式不行
要了解套接字并正确使用它们,您需要套接字圣经:
W。 Richard Stevens,Unix 网络编程,第 1 卷:套接字网络 API(第 3 版)
在你坐下来写一行套接字代码之前,你绝对必须有这本书。不要没有它就离开家。真的。在 Amazon 使用 35 美元左右起。
编辑: OP询问了其他卷。这是另外两个:
W. 理查德史蒂文斯,
UNIX 网络编程,第 2 卷:
进程间通信(第二
版)
W. 理查德史蒂文斯,
TCP/IP 图解,卷。 1:
协议
它们具有史蒂文斯一贯和预期的卓越品质。我不知道他整合所有这些书的计划是什么,
我的建议:
我会先用编写速度快、功能强大的高级语言(例如 Python)编写机器人。习惯使用网络工具、IRC 协议和其他东西。
了解低级别的套接字和网络。对于 Unix,我想看看 Unix Network Programming。
用 C++ 编写你的机器人!犯错误,改正错误,并坚持下去。
学习C/C++ 套接字编程的最佳指南必须是Beej 的网络编程指南。它涵盖了您需要了解的所有步骤,包括示例和详细说明。据我所知,该站点唯一缺少的信息是 IPv6 多播。
从一个简单的客户端-服务器示例开始。使用 Qt 框架非常容易。例如:
服务器.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% 免费访问这里是学习网络编程基础知识的网站。
我仍然推荐这里提供的书籍,因为它们提供了有关套接字和 TCP/IP 协议的非常可靠的信息。
Unix 网络编程:套接字网络 Api Unix 网络编程:套接字网络 Api - 作者 W. Richard Stevens
TCP/IP 图解,卷。 1:协议(Addison-Wesley 专业计算系列)TCP/IP Illustrated,Vol. 1:W. Richard Stevens 的协议(Addison-Wesley 专业计算系列)
UNIX 网络编程,第 2 卷:进程间通信,第二版UNIX 网络编程,第 2 卷:进程间通信,第二版,作者:W. Richard Stevens
TCP/IP 图解,第 1 卷:协议(Addison-Wesley 专业计算系列)第 2 版 作者:Kevin Fall(作者),W. Stevens(作者)
TCP/IP 指南:全面、图解的 Internet 协议参考第 1 版 通过 Charles M. Kozierok
我不是网络程序员或软件开发人员,我唯一的兴趣是虚幻引擎的网络和复制,仅用于游戏开发。请不要向我发送 PM 或询问有关网络的问题。