Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 套接字编程-客户端(linux)、服务器(Windows)_Java_Linux_Windows_Sockets - Fatal编程技术网

Java 套接字编程-客户端(linux)、服务器(Windows)

Java 套接字编程-客户端(linux)、服务器(Windows),java,linux,windows,sockets,Java,Linux,Windows,Sockets,我正在尝试创建简单的套接字应用程序,使用套接字将流从linux(64x ArchLinux)发送到服务器(Windows XP) 我使用的代码是我在互联网上找到的,只是为了检查它是否有效。有趣的是,如果我使用的是Windows XP(服务器)和Win 8(客户端),那么代码可以完美地工作,但是当客户端在ArchLinux上时,它就不工作了。是否有一些特殊的方式连接Windows Linux Server.java import java.lang.*; import java.io.*; imp

我正在尝试创建简单的套接字应用程序,使用套接字将流从linux(64x ArchLinux)发送到服务器(Windows XP)

我使用的代码是我在互联网上找到的,只是为了检查它是否有效。有趣的是,如果我使用的是Windows XP(服务器)和Win 8(客户端),那么代码可以完美地工作,但是当客户端在ArchLinux上时,它就不工作了。是否有一些特殊的方式连接Windows Linux

Server.java

import java.lang.*;
import java.io.*;
import java.net.*;

class Server_pzm {
   public static void main(String args[]) {
      String data = "Toobie ornaught toobie";
      try {
         ServerSocket srvr = new ServerSocket(1234);
         Socket skt = srvr.accept();
         System.out.print("Server has connected!\n");
         PrintWriter out = new PrintWriter(skt.getOutputStream(), true);
         System.out.print("Sending string: '" + data + "'\n");
         out.print(data);
         out.close();
         skt.close();
         srvr.close();
      }
      catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      }
   }
}
Client.java

import java.lang.*;
import java.io.*;
import java.net.*;

class Client {
   public static void main(String args[]) {
      try {
         Socket skt = new Socket("192.168.224.78", 1234);
         BufferedReader in = new BufferedReader(new
            InputStreamReader(skt.getInputStream()));
         System.out.print("Received string: '");

         // while (!in.ready()) {} line removed
         System.out.println(in.readLine());  


         System.out.print("'\n");
         in.close();
      }
      /* lines removed catch(Exception e) {
         System.out.print("Whoops! It didn't work!\n");
      } */

      // added exception handling
      catch(UnknownHostException e) {
         e.printStackTrace();
      }
      catch (IOException e){
         e.printStackTrace();
      }

   }
}
编辑

对不起,我没有具体说明不工作是什么意思。我的意思是,我得到了一个异常,以后会打印System.out.print(“哎哟!它不工作!\n”);就像抓球一样。Win 8和Arch Linux安装在同一台笔记本电脑上,而这两个系统的代码都在我的dropbox文件夹中(因此代码是相同的)-我将在回到笔记本电脑后发布实际的异常

编辑2:

我更新了代码,这是我得到的例外:

java.net.ConnectException: Connection refused
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
        at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
        at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
        at java.net.Socket.connect(Socket.java:579)
        at java.net.Socket.connect(Socket.java:528)
        at java.net.Socket.<init>(Socket.java:425)
        at java.net.Socket.<init>(Socket.java:208)
java.net.ConnectException:连接被拒绝
位于java.net.PlainSocketImpl.socketConnect(本机方法)
位于java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:339)
位于java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:200)
位于java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:182)
位于java.net.socksocketimpl.connect(socksocketimpl.java:392)
位于java.net.Socket.connect(Socket.java:579)
位于java.net.Socket.connect(Socket.java:528)
位于java.net.Socket。(Socket.java:425)
位于java.net.Socket(Socket.java:208)

您确定可以在这些系统之间建立连接吗?我已经在Windows 7和Linux Mint上的Virtualbox上编译并运行了您的代码,并且运行正常

你说“它不起作用”是什么意思?它会抛出异常吗?如果您没有任何输出,请尝试再次运行它并等待大约30秒

对我来说,这只是一个网络问题。所以,您还应该尝试从linux ping您的windows计算机,然后尝试telnet到服务器

编辑:

所以我们知道这是一个网络问题。首先尝试从Linux系统ping ip服务器

ping 192.168.224.78
如果不起作用,则应检查两台计算机是否位于同一子网
192.168.224.0
,假设掩码为
255.255.255.0
。您只需在控制台中键入
ifconfig


在下一步中,您应该尝试禁用windows防火墙

您确定可以在这些系统之间建立连接吗?我已经在Windows 7和Linux Mint上的Virtualbox上编译并运行了您的代码,并且运行正常

你说“它不起作用”是什么意思?它会抛出异常吗?如果您没有任何输出,请尝试再次运行它并等待大约30秒

对我来说,这只是一个网络问题。所以,您还应该尝试从linux ping您的windows计算机,然后尝试telnet到服务器

编辑:

所以我们知道这是一个网络问题。首先尝试从Linux系统ping ip服务器

ping 192.168.224.78
如果不起作用,则应检查两台计算机是否位于同一子网
192.168.224.0
,假设掩码为
255.255.255.0
。您只需在控制台中键入
ifconfig


在下一步中,您应该尝试禁用windows防火墙

您确定可以在这些系统之间建立连接吗?我已经在Windows 7和Linux Mint上的Virtualbox上编译并运行了您的代码,并且运行正常

你说“它不起作用”是什么意思?它会抛出异常吗?如果您没有任何输出,请尝试再次运行它并等待大约30秒

对我来说,这只是一个网络问题。所以,您还应该尝试从linux ping您的windows计算机,然后尝试telnet到服务器

编辑:

所以我们知道这是一个网络问题。首先尝试从Linux系统ping ip服务器

ping 192.168.224.78
如果不起作用,则应检查两台计算机是否位于同一子网
192.168.224.0
,假设掩码为
255.255.255.0
。您只需在控制台中键入
ifconfig


在下一步中,您应该尝试禁用windows防火墙

您确定可以在这些系统之间建立连接吗?我已经在Windows 7和Linux Mint上的Virtualbox上编译并运行了您的代码,并且运行正常

你说“它不起作用”是什么意思?它会抛出异常吗?如果您没有任何输出,请尝试再次运行它并等待大约30秒

对我来说,这只是一个网络问题。所以,您还应该尝试从linux ping您的windows计算机,然后尝试telnet到服务器

编辑:

所以我们知道这是一个网络问题。首先尝试从Linux系统ping ip服务器

ping 192.168.224.78
如果不起作用,则应检查两台计算机是否位于同一子网
192.168.224.0
,假设掩码为
255.255.255.0
。您只需在控制台中键入
ifconfig

在下一步中,您应该尝试禁用windows防火墙

java.net.ConnectException:连接被拒绝

这有两种可能的含义

  • 在您尝试连接到的地址:端口处没有侦听内容
  • 这里有一条防火墙规则
  • 更有可能是1。防火墙通常只是丢弃数据包,这会导致连接超时而不是拒绝

    java.net.ConnectException:连接被拒绝

    这有两种可能的含义

  • 在您尝试连接到的地址:端口处没有侦听内容
  • 这里有一条防火墙规则
  • 更有可能是1。防火墙通常只是丢弃数据包,这会导致连接超时而不是拒绝

    java.net.ConnectException:连接被拒绝

    这有两种可能的含义

  • 在您尝试连接到的地址:端口处没有侦听内容
  • 这里有一条防火墙规则
  • 更像