我们的项目是通讯软件,里面用到了服务器。对于服务器,我们是使用一台电脑当做服务器,使用socket 类写。
对于服务器,我们在开发的时候遇到了问题。首先是服务器的连接。我们采用电脑的ip地址,发现连接不到作为服务器的那台电脑。寻找原因之后知道是因为电脑的ip不是外网的,如果想要通过网络进行连接,需要使用外网的服务器,这就需要成本。所以,我们的解决方法是使用局域网来模拟互联网,在局域网内就可以不用外网服务器进行连接。不过这样软件就不能达到我们本来预期的不在同个局域网内也能通讯的功能。
其次,我们发现在客户端发送的消息不知道服务器会将其转发给谁。在我们没有声明的情况下,服务器会对连接进来的所有客户端都发送消息。我们的解决方法是在客户端发送消息上服务器的时候,在前面加上自己的IP并用逗号内容隔开。因为我们的软件现在只是实现2部电脑的通讯,故把自己的ip给出后,就可以限制只向另一个IP发送消息。后期如果我们对项目进行完善,进行到多人对话,则我们想在服务器上建立一个表,来标记每个连进来的电脑的IP,然后发送的消息必须指明自己的消息发送给谁(用户名),在查表找到IP即可。
最后,在我们进行测试的时候,发现如果对服务器发送中文,服务器会判断为乱码并无法正常显示。我们使用了UTF-8来转码,可还是没有成功。这是我们到现在还没有解决的问题,希望老师指导下。
其实,服务器是一个中转站,是一个把信息来回转发的程序。如果程序本身可知道自己要把消息发送到哪个ip地址,那么完全可以不用服务器,直接进行发送。可是这样就会造成程序每次运行都要先确定IP的问题。比如我把笔记本移动到别的地方,运行程序后本来固定的IP变了,所以无法找到对方的程序。这是我们考虑后选择使用服务器的原因。
时间: 2024-10-05 16:18:56