通过 tcp 从 Linux 连接到 Windows
Connection from linux to windows via tcp
我在Windows(c#(上有一个tcp服务器应用程序,它接受端口3000的任何连接我在 linux(ubuntu((c++( 上有一个 tcp 客户端应用程序,它通过端口 3000 发送一个简单的文本
我在 Windows 上还有一个客户端,在 Linux 上有一个服务器,我可以完美地发送文本:从Linux到Linux从窗户到窗户从Windows到Linux
问题是,当我尝试从Linux客户端发送到Windows服务器时,我在Linux上的C ++应用程序告诉我主机不存在。
我已经检查了IP地址,这是正确的,我也尝试使用主机名来执行此操作
但它不起作用
有谁知道为什么会这样???
这是我在客户端(Linux-C++(上的代码:
int sockfd, portno, n;
struct sockaddr_in serv_addr;
struct hostent *server;
struct in_addr addr={0};
char buffer[256];
if (argc < 3) {
fprintf(stderr,"usage %s hostname portn", argv[0]);
exit(0);
}
portno = atoi(argv[2]);
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd < 0)
error("ERROR opening socket");
addr.s_addr=inet_addr(argv[1]);
//server=gethostbyname(argv[1]);
server = gethostbyaddr((char *) &addr, 4, AF_INET);
if (server == NULL) {
fprintf(stderr,"ERROR, no such hostn");
exit(0);
}
我打电话给ping,一切都很好
我在 Windows 上运行我的服务器并打开端口 3000 以连接
我尝试使用windowsIP/windowsHostName和端口3000运行我的客户端(上面的代码((已经尝试了另一个端口(
问题出在行上:
server = gethostbyaddr((char *) &addr, 4, AF_INET);
服务器为空,因此它打印"错误,没有这样的主机">
但 IP 是正确的。
当我使用相同的代码与 linux(c++( 上的服务器连接时,它可以工作
最可能的原因是您的 Windows 防火墙阻止了与端口 3000 的传入连接。
转到控制面板并禁用防火墙并再次测试。如果这是问题所在,则必须添加规则以允许传入连接到 3000 端口。您还应该在规则中包含允许的主机 IP(您的 Linux IP(,以避免出现意外远程连接的问题。
您可以尝试从 linux 到您的服务器 IP 地址和 3000 端口建立 telnet 连接。它可能会被防火墙拒绝。
将虚拟框中的网络类型设置为"NAT"。如果它位于桥接适配器中,则会出现上述问题。详细的讨论可以在这里找到:http://ubuntuforums.org/archive/index.php/t-1786307.html
- 无法在windows上使用mingw将sqlite3与c连接
- 是否有 Windows 用户空间函数来枚举连接的网络共享?
- Firebase C++ Windows 上的实时数据库连接丢失
- 使用 IP 帮助程序的 Windows 中活动 UDP 连接的远程地址
- 从 Linux OMI (omicli) 到 Windows WMI 的连接失败,并出现与 DMTF 相关的错误
- 如何从Qt绑定到在Windows 7 / 8 / 10中连接/断开USB设备事件
- 在 Windows 问题上连接到企业 WiFi
- 如何在 Windows 进程回调中断开连接时获取设备信息(硬件 ID)
- 在Windows -C 中未建立的TCP连接
- QT 5.8 SQL连接错误:Windows 10上未加载QMYSQL驱动程序
- 来自 Visual C++ Windows Form 项目的 SQL 连接
- Windows,C++:一个服务器套接字上有两个连接
- 使用 C++ 在 Windows 上建立蓝牙连接(收到错误 10060)
- MySQL Windows c api 命名管道错误:"在'等待初始通信数据包'时丢失与 MySQL 服务器的连接,系统错误:0
- 识别Windows中连接的驱动器
- 使用协议缓冲区的 SciDB C++ (Windows) 连接
- 如何在Windows 7桌面上接受传入的蓝牙连接(使用c++或c#程序)
- 信号插槽在windows下连接,在linux下连接NOT
- 识别与 Windows USB 虚拟 COM 端口的连接事件
- 检索用于在 Windows 上使用 C++ 连接到互联网的适配器