scala - 在scala中使用套接字编程连接两台计算机
问题描述
我正在尝试将我的笔记本电脑连接到另一个网络中的另一台笔记本电脑,我执行了以下操作:
1-手动打开我朋友的笔记本电脑和我的两个端口
2-两台笔记本电脑的防火墙也都关闭了
下面是我的代码
服务器类:
// Simple server
import java.net._
import java.io._
import scala.io._
object Server {
def main(args: Array[String]): Unit = {
val server = new ServerSocket(2076)
while (true) {
val s = server.accept()
val in = new BufferedSource(s.getInputStream()).getLines()
val out = new PrintStream(s.getOutputStream())
out.println(in.next())
out.flush()
s.close()
}
}
}
客户端类:
// Simple client
import java.net._
import java.io._
import scala.io._
object Client {
def main(args: Array[String]): Unit = {
// val s = new Socket("192.168.1.15",2076)
val s = new Socket("185.98.222.147",2076)
lazy val in = new BufferedSource(s.getInputStream()).getLines()
val out = new PrintStream(s.getOutputStream())
out.println("Hello, world")
out.flush()
println("Received: " + in.next())
s.close()
}
}
我尝试运行代码两次:首先使用我朋友的本地 IP,我在下面收到此错误,当我尝试我朋友的公共 IP 时,代码没有做任何事情,只是在双方等待。谁能告诉我我们做错了什么?
java.net.ConnectException: Connection refused (Connection refused)
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at Client$.main(Client.scala:9)
at Client.main(Client.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at scala.reflect.internal.util.ScalaClassLoader.$anonfun$run$2(ScalaClassLoader.scala:99)
at scala.reflect.internal.util.ScalaClassLoader.asContext(ScalaClassLoader.scala:34)
at scala.reflect.internal.util.ScalaClassLoader.asContext$(ScalaClassLoader.scala:30)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.asContext(ScalaClassLoader.scala:125)
at scala.reflect.internal.util.ScalaClassLoader.run(ScalaClassLoader.scala:99)
at scala.reflect.internal.util.ScalaClassLoader.run$(ScalaClassLoader.scala:91)
at scala.reflect.internal.util.ScalaClassLoader$URLClassLoader.run(ScalaClassLoader.scala:125)
at scala.tools.nsc.CommonRunner.run(ObjectRunner.scala:22)
at scala.tools.nsc.CommonRunner.run$(ObjectRunner.scala:21)
at scala.tools.nsc.ObjectRunner$.run(ObjectRunner.scala:39)
at scala.tools.nsc.CommonRunner.runAndCatch(ObjectRunner.scala:29)
at scala.tools.nsc.CommonRunner.runAndCatch$(ObjectRunner.scala:28)
at scala.tools.nsc.ObjectRunner$.runAndCatch(ObjectRunner.scala:39)
at scala.tools.nsc.MainGenericRunner.runTarget$1(MainGenericRunner.scala:66)
at scala.tools.nsc.MainGenericRunner.run$1(MainGenericRunner.scala:85)
at scala.tools.nsc.MainGenericRunner.process(MainGenericRunner.scala:96)
at scala.tools.nsc.MainGenericRunner$.main(MainGenericRunner.scala:101)
at scala.tools.nsc.MainGenericRunner.main(MainGenericRunner.scala)
解决方案
推荐阅读
- bios - 嗨,我正在寻找 e1-771g 的 fd 文件 bios
- linux - udhcpd 与 isc 的区别?
- security - 客户端服务器游戏包注入
- nginx - NGINX 使用客户端证书 (ssl_verify_client)
- javascript - three.js 的旧版本在哪里?为什么新版本的three.js不兼容?
- graph - 使用 Nauty geng,如何为二分图指定分区?
- amazon-web-services - EC2 无法解析私有 DNS 主机名
- python - 根据条件保存和删除熊猫数据框中的行。错误:一元操作数类型错误〜:'str'
- reactjs - 如果我在 useEffect 中添加状态,useEffect 会继续获取我的数据
- echarts - 当项目开始值小于xAxis上的最小值时如何避免消失?