当前位置: 首页 > 知识库问答 >
问题:

通过局域网与TCP/IP进行Java聊天

夏侯兴学
2023-03-14

我在Java中开发了一个使用TCP/IP进行聊天的应用程序。到目前为止,它在同一台机器上运行服务器和客户机时可以完成这项工作,但是我想让它在局域网上工作。

我发现我将在我的路由器上使用端口转发,与我在客户端中使用的端口相同

在我的Virgin媒体集线器路由器上,我用(4444)端口转发了我使用的端口,协议是TCP到我机器的本地IP(192.168.0.21)。我还确保没有端口被阻塞。

对于防火墙,我已确保windows防火墙未启用,并关闭了我的卡巴斯基防病毒防火墙。

到目前为止,这还不允许我通过局域网与我的vmware机器进行通信。

下面是套接字和服务器套接字的代码;

客户端

int portNumber = 4444;
InetAddress host = InetAddress.getLocalHost(); // I also did try changing the host to a String and making host = InetAddress.getLocalHost().getHostAddress();
Socket link = new Socket(host, portNumber);

服务器:

int portNumber = 4444;
ServerSocket serverSocket = new ServerSocket(portNumber);
link = serverSocket.accept();

你知道我做错了什么,或者错过了什么吗?

共有1个答案

鄢英哲
2023-03-14

使用该代码(InetSolutions host=InetAddress.getLocalHost();),您的客户端将始终与localhost联系,这显然不是您想要的(而是解释为什么它在本地工作...

我可以推荐Oracle关于客户机-服务器通信的官方教程吗?

假设您的远程系统的IP地址192.168.0.100,您的代码将

int portNumber = 4444;
String host = "192.168.0.100"; // Socket also has a constructor that accepts
                               // as String where you can either input a hostname or
                               // an IP address
Socket link = new Socket(host, portNumber);

这里有套接字Javadoc

编辑:程序中的主要缺陷是使用InetAddress。getLocalHost()根据Javadoc

返回本地主机的地址。这是通过从系统中检索主机的名称,然后将该名称解析为InetAddress来实现的。

我的。因此,是的,你的程序可以与本地计算机一起工作,但不能与远程计算机一起工作。我的答案的本质不是我使用字符串,而是我不使用localhost。。。

 类似资料:
  • 光环板之间可以组成局域网,组成局域网的设备之间可以相互通讯,使用一个光环板就可以控制其他光环板。 用光环板A控制光环板B 让我们新建一个项目,使用两块光环板,实现用光环板A控制光环板B。 启动光环板A的局域网 1. 选择“设备”,添加光环板。用USB数据线将光环板与电脑相连,点击“连接”,连接设备。 2. 启用上传模式 3. 添加事件类积木 当光环板启动时,和局域网类积木 建立名为(mesh1)的

  • 问题内容: 我要通过TCP / IP编写程序,我应该通过客户端或服务器发送对象,当我想发送或接收字符串但尝试读取对象时,它是正确的: 我收到一个例外: 它指的是这一行: 这是我的服务器代码: 客户端代码: 谁能解释我发生了什么,这个例外是什么,为什么我收到这个例外? 问题答案: 只是摆脱发送和接收布尔值的麻烦。这是多余的。如果在创建连接时遇到问题,则不会创建套接字:而是抛出异常。您会将所有内容与同

  • 主要内容:一、面试真题,二、面试官心理分析,三、正餐开始——面试题剖析 目录 一、面试真题 二、面试官心理分析 三、面试题剖析 一、面试真题 你能聊聊TCP/IP 的四层网络模型和 OSI 七层网络模型吗? 二、面试官心理分析 为啥要问这个? 坦白讲,一些大的公司,计算机基础必面,尤其是针对薪资30k以内的工程师,因为薪资30k以内,你还是要干活儿的吧,还没上升到就设计架构就可以的程度吧,你还没

  • 本文向大家介绍易语言局域网聊天程序制作,包括了易语言局域网聊天程序制作的使用技巧和注意事项,需要的朋友参考一下 用最简单的代码编写局域网聊天程序 打开易语言程序 新建一个窗口程序 在窗口中添加一个客户端组件、一个服务端组件、一个发送按钮和2个文本框,如下图所示。 将服务器的端口改成10000,整理组件位置。 输入按钮事件(如下图所示),链接服务端并发送信息给服务端 点击预览按钮弹出应用程序对话框,

  • 问题内容: 只是想知道是否存在用于序列化对象,将其放入网络流并在另一端反序列化的教程或方法。我了解序列化,I / O,流,套接字等的原理,我只想举一个客户端向服务器发送对象的示例。 问题答案: 这(PDF)是指导您完成序列化的基础知识,及插座一个有用的教程,然后绑两个概念放在一起(大约一半通过幻灯片)来说明如何序列化对象,并从客户端发送到服务器(无RMI )。我认为这正是您想要的。

  • 问题内容: 我正在考虑AJAX应用程序必须轮询轮询更新有多大限制,而最理想的是javascript能够建立与服务器的真正双向连接。我想知道是否存在将javascript与可以建立tcp连接的浏览器插件集成的方法,以便可以将数据传入和传出浏览器插件。 问题答案: 这是具有类似方法的实现: 套接字 它使用Java Applet,并将其API桥接到JavaScript,有趣的是… 这里是另一个: 套接字