Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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 连接两台计算机(通过无线网络连接机器)_Java_Eclipse_Sockets_Network Programming_Client Server - Fatal编程技术网

Java 连接两台计算机(通过无线网络连接机器)

Java 连接两台计算机(通过无线网络连接机器),java,eclipse,sockets,network-programming,client-server,Java,Eclipse,Sockets,Network Programming,Client Server,我坐在一个房间里,笔记本电脑与无线网络相连。 在我旁边,我的朋友正坐在另一台笔记本电脑旁,这台笔记本电脑也连接到同一个网络 我们希望使用套接字编程(eclipse/netbeans)连接笔记本电脑。我们怎样才能做到这一点?这就是我们迄今为止所做的: 我的笔记本电脑上有一个客户端类。我的朋友在 她的(地址中有我笔记本电脑的IP) 我们已禁用两台笔记本电脑上的防火墙 我们已在两台笔记本电脑上手动打开6789端口 然后,我们首先在我的笔记本电脑上运行server类,然后运行客户端 她的课 这些是课程

我坐在一个房间里,笔记本电脑与无线网络相连。 在我旁边,我的朋友正坐在另一台笔记本电脑旁,这台笔记本电脑也连接到同一个网络

我们希望使用套接字编程(eclipse/netbeans)连接笔记本电脑。我们怎样才能做到这一点?这就是我们迄今为止所做的:

  • 我的笔记本电脑上有一个客户端类。我的朋友在
    她的(地址中有我笔记本电脑的IP)
  • 我们已禁用两台笔记本电脑上的防火墙
  • 我们已在两台笔记本电脑上手动打开6789端口
  • 然后,我们首先在我的笔记本电脑上运行server类,然后运行客户端
    她的课 这些是课程

    服务器:

    package Connect1;
    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    import java.io.*; 
    import java.net.*; 
    public class Server1 
    {
        public static void main(String argv[]) throws Exception 
        {
           String clientSentence;
           String capitalizedSentence;
           ServerSocket welcomeSocket = new ServerSocket(6789);
           while(true)
           {
               Socket connectionSocket = welcomeSocket.accept(); 
               BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); 
               DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream()); 
               clientSentence = inFromClient.readLine();
               capitalizedSentence = clientSentence.toUpperCase() + '\n';
               outToClient.writeBytes(capitalizedSentence); 
               connectionSocket.close();
             //  welcomeSocket.close();
            }
         }
    }
    
    客户:

    package Connect1;
    
    import java.io.*; 
    import java.net.*;  
    import javax.swing.JOptionPane;
    import java.util.Scanner;
    class TCPClient { 
        public static void main(String argv[]) throws Exception
        { 
            String sentence;
            String modifiedSentence;
            BufferedReader inFromUser =new BufferedReader(new InputStreamReader(System.in));
            Socket clientSocket = new Socket("IP of my laptop here", 6789);
            DataOutputStream outToServer =new DataOutputStream(clientSocket.getOutputStream());
            BufferedReader inFromServer =new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
            System.out.print("Enter characters to be capitalized: ");
            sentence =inFromUser.readLine(); 
            outToServer.writeBytes(sentence + '\n'); 
            modifiedSentence = inFromServer.readLine(); 
            System.out.println("FROM SERVER: " + modifiedSentence); 
            Scanner input=new Scanner(System.in);
            //System.out.print("Do you want to enter again? Press '0' for 'yes' and '1' if 'No'.");
            //i=input.nextInt();
    
        }
      }
    
    我们得到这个错误:

    Exception in thread "main" java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(Unknown Source)
    at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
    at java.net.PlainSocketImpl.connect(Unknown Source)
    at java.net.SocksSocketImpl.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.connect(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at java.net.Socket.<init>(Unknown Source)
    at Code1.TCPClient.main(TCPClient.java:18)
    
    线程“main”java.net.ConnectException:连接被拒绝:连接 位于java.net.PlainSocketImpl.socketConnect(本机方法) 位于java.net.PlainSocketImpl.doConnect(未知源) 位于java.net.PlainSocketImpl.connectToAddress(未知源) 位于java.net.PlainSocketImpl.connect(未知源) 位于java.net.socksocketimpl.connect(未知源) 位于java.net.Socket.connect(未知源) 位于java.net.Socket.connect(未知源) 位于java.net.Socket。(未知源) 位于java.net.Socket。(未知源) 位于Code1.TCPClient.main(TCPClient.java:18)
    谁能告诉我我们做错了什么?我们的代码或程序中是否缺少某些内容?我们是否也需要先建立其他类型的联系?我们是否必须打开其他端口才能执行此操作?在两台笔记本电脑上使用不同版本的eclipse可以做到这一点吗

    要创建客户端套接字,您需要使用服务器的IP地址,而不是您的IP地址

    package Connect1;
    
    import java.io.*; 
    import java.net.*;  
    import javax.swing.JOptionPane;
    import java.util.Scanner;
    class TCPClient { 
    public static void main(String argv[]) throws Exception
    { 
        String sentence;
        String modifiedSentence;
        BufferedReader inFromUser =new BufferedReader(new   InputStreamReader(System.in));
        Socket clientSocket = new Socket(InetAddress.getByName("SERVER_IP"), 6789);
        DataOutputStream outToServer =new DataOutputStream(clientSocket.getOutputStream());
        BufferedReader inFromServer =new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        System.out.print("Enter characters to be capitalized: ");
        sentence =inFromUser.readLine(); 
        outToServer.writeBytes(sentence + '\n'); 
        modifiedSentence = inFromServer.readLine(); 
        System.out.println("FROM SERVER: " + modifiedSentence); 
        Scanner input=new Scanner(System.in);
        //System.out.print("Do you want to enter again? Press '0' for 'yes' and '1' if 'No'.");
        //i=input.nextInt();
    
     }
      }
    
    用服务器的IP替换“服务器IP”。

    替换

    Socket clientSocket = new Socket("IP of my laptop here", 6789);
    

  • 在命令提示符下,
    键入:ipconfig

    这将给出您机器的IP地址

  • 现在假设您正在计算机上运行服务器代码,将从步骤1检索到的IP地址传递给客户机代码(由您的客户朋友运行的代码):

    socketclientsocket=新套接字(,6789);
    

  • 现在,无论哪台机器运行客户机代码,都需要传递服务器机器的IP地址,以便它能够相互连接。因此,如果您想与朋友聊天,在运行服务器类代码后,也可以运行客户机类代码。现在,你们都连接到服务器并可以聊天。

    一个好的测试是尝试从客户端计算机“ping”(Windows上的tracert)服务器的IP地址。这将告诉您是否存在路由问题和代码问题。
    Socket clientSocket = new Socket(server Address, 6789);
    
    Socket clientSocket = new Socket(<Here goes the IP address of the server machine>, 6789);