c++网络编程
C++ network programming
我想扩展我在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++中编写独立于平台的网络代码的事实上的标准。
我的建议:
-
我首先会用易于编写、功能强大的高级语言(如python)编写bot。熟悉使用网络工具、IRC协议等。
-
了解底层的套接字和网络。对于Unix,我建议您看一下Unix Network Programming。
-
用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
我不是一个网络程序员或软件开发人员,我唯一的兴趣是网络和复制虚幻引擎的游戏开发只有。请不要给我发邮件或询问有关网络的问题。
- 如何以编程方式将路由添加到网络接口
- 不同网络之间的插座编程
- 用C++/C进行安全网络编程
- 网络编程.确定消息的结尾
- 分段 C++类网络编程的错误
- 我可以使用Boost::Asio而不用担心网络编程问题吗?
- 开始使用p2p类型的网络/编程
- 需要一个在C/C++或Python中进行HTTP/HTML网络编程的库
- 何时在网络编程中使用 ntohs 函数
- 我应该用C++进行网络编程吗
- 用Active Directory进行C++网络编程
- 网络编程基础知识,需要帮助了解addrinfo/sockaddr_instructs的用法等
- 如何使用c++网络编程进行数据交换
- 我如何开始在网络编程
- 我如何开始与跨平台网络编程
- 网络编程-如何在C++中创建UDP套接字的示例
- "#pragma pack"在网络编程中的作用是什么
- c++网络编程
- 网络编程- c++网络库需要内核堆栈
- 在Qt中开始网络编程