使用QT编写的局域网探测文件传输工具
文件传输工具
通过发送udp广播消息将IP广播给其他开启该程序的局域网机器
收到的广播消息可以显示在IP地址列表中,点击IP地址可以自动填充到IP地址栏内
选择文件后点击发送可以发送给指定IP,并能在传输过程中显示进度
默认端口6001。目前不支持修改,修改端口会导致网络连接失败。
资源链接:https://download.youkuaiyun.com/download/codears/90117330?spm=1001.2014.3001.5503
界面比较简洁:
部分代码如下:
udp发送广播消息
void Client::SendUDPMsg() {
int ret = 0;
// 设置广播地址
struct sockaddr_in client;
memset(&client, 0, sizeof(client));
client.sin_family = AF_INET;
client.sin_port = htons(g_udpServerPort);
client.sin_addr.s_addr = inet_addr("255.255.255.255");
int len = sizeof(SOCKADDR);
hostent* host = gethostbyname(g_serverHost.toStdString().c_str());
QString msg = QString("broadcast|%1").arg(host->h_name);
ret = sendto(m_udpClientSocket, msg.toStdString().c_str(), msg.length(), 0, (SOCKADDR*)&client, len);
}
udp接收消息:
void Client::RecvUDPMsg() {
int ret = 0;
struct sockaddr_in client;
memset(&client, 0, sizeof(client));
int len = sizeof(SOCKADDR);
char buff[BUFF_SIZE] = {
0};
ret = recvfrom(m_udpServerSocket, buff, BUFF_SIZE, 0, (SOCKADDR*)&client, &len);
QString host(inet_ntoa(client.sin_addr));
if (m_localIPv4List.indexOf(host) == -1 && m_knownHosts.indexOf(host) == -1) {
qDebug() << __FUNCTION__ << "new host:" << host;
m_knownHosts.push_back(host);
(static_cast<Work*>(m_pParent))->NewHost(host);
} else {
return;
}
}