Sockets 什么';在套接字编程中,Ubuntu服务器(32位)和桌面(32位)的区别是什么

Sockets 什么';在套接字编程中,Ubuntu服务器(32位)和桌面(32位)的区别是什么,sockets,ubuntu,connection,desktop,Sockets,Ubuntu,Connection,Desktop,我正在从事一个基于服务器/客户端的项目。我几乎完成了服务器端代码 我在Ubuntu桌面上的EclipseCDT中开发了服务器应用程序,一切正常 但是当将我的应用程序部署到Ubuntu服务器时(我尝试了服务器10.04/10.10),服务器应用程序可以正常启动(等待连接),但同一个客户端无法连接到服务器 我使用套接字接收和发送数据到/从客户端 彼得 注意:如果我在我的服务器上安装了sudo apt-get-install-ubuntu-desktop,那么一切都会恢复正常 ============

我正在从事一个基于服务器/客户端的项目。我几乎完成了服务器端代码

我在Ubuntu桌面上的EclipseCDT中开发了服务器应用程序,一切正常

但是当将我的应用程序部署到Ubuntu服务器时(我尝试了服务器10.04/10.10),服务器应用程序可以正常启动(等待连接),但同一个客户端无法连接到服务器

我使用套接字接收和发送数据到/从客户端

彼得

注意:如果我在我的服务器上安装了
sudo apt-get-install-ubuntu-desktop
,那么一切都会恢复正常

===========================================================================

源代码中的新发现:

LabelStartBlocking:
int newScoketId = ::accept(socketId, 0, 0); // socketId == 3 ::accept is define in socket.h
                          // waiting for connection
LabelResume: // if new connection coming
// Do something with newSocketId
Ubuntu桌面和服务器之间的行为差异是:

在Ubuntu桌面版上,当服务器启动时,它会在
LabelStartBlocking
处被套接字例程阻塞
::accept
;然后,如果新连接到达,服务器将在
LabelResume
处恢复,并使用返回值
newSocketId
创建新的套接字连接

但是,在Ubuntu服务器版本上,当服务器启动时,它也会被套接字例程
::accept
阻止在
LabelStartBlocking
,但是如果新连接到达,服务器将不会在
LabelResume
恢复,并且无法创建新的套接字连接

你们能帮帮我吗


彼得

谢谢你的关注

我终于明白了

如果同一主机名有多个IP地址(
/etc/hosts
),则旧代码将失败

示例
/etc/hosts
文件:

127.0.0.1 localhost YourHostName
10.50.10.251 YourHostName
我跟踪了调用堆栈,发现传递给程序的IP地址(10.50.10.251)被转换为主机名,然后主机名被转换回IP地址(用于绑定),但是另一个,这就是为什么我的服务器程序不能接受任何客户端连接

如果其他人也有类似的问题,希望能有所帮助


彼得

谢谢你的关注

我终于明白了

如果同一主机名有多个IP地址(
/etc/hosts
),则旧代码将失败

示例
/etc/hosts
文件:

127.0.0.1 localhost YourHostName
10.50.10.251 YourHostName
我跟踪了调用堆栈,发现传递给程序的IP地址(10.50.10.251)被转换为主机名,然后主机名被转换回IP地址(用于绑定),但是另一个,这就是为什么我的服务器程序不能接受任何客户端连接

如果其他人也有类似的问题,希望能有所帮助


Peter

有几件事需要澄清:当客户端程序和服务器程序在同一个框中时,它们是否正确通信?程序如何指定网络地址?客户端和服务器所在的网络是什么样子的?把这些放在你的问题和源代码中,你可能会得到合理的答案。这个问题与Ubuntu服务器和客户端之间的差异无关。套接字连接代码来自另一个团队,并且没有文档。它们甚至不能在同一个盒子上与服务器和客户端通信。从我个人的观点来看,这可能是一些服务器/桌面配置的差异,因为同一个应用程序,它在桌面上工作,但不是工作服务器版本。嗨,antlersoft,我确实在源代码中找到了一些东西。你能帮我查一下吗?我在帖子中补充了新的发现。有几件事你需要澄清:当客户端程序和服务器程序在同一个盒子上时,它们通信是否正常?程序如何指定网络地址?客户端和服务器所在的网络是什么样子的?把这些放在你的问题和源代码中,你可能会得到合理的答案。这个问题与Ubuntu服务器和客户端之间的差异无关。套接字连接代码来自另一个团队,并且没有文档。它们甚至不能在同一个盒子上与服务器和客户端通信。从我个人的观点来看,这可能是一些服务器/桌面配置的差异,因为同一个应用程序,它在桌面上工作,但不是工作服务器版本。嗨,antlersoft,我确实在源代码中找到了一些东西。你能帮我查一下吗?我在帖子中添加了新发现。