【问题标题】:Connecting two machines using Socket使用Socket连接两台机器
【发布时间】:2016-11-23 12:53:12
【问题描述】:

我尝试使用 Socket 连接两台机器。

我将客户端代码放在机器 A 中:

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

public class MyClient {
    public static void main(String[] args) {
        try {   
            Socket s = new Socket("IP ADDRESS",5555);
        //  Socket s = new Socket("localhost",6669);
            DataOutputStream dout = new DataOutputStream(s.getOutputStream());
            dout.writeUTF("Hello Server");
            dout.flush();
            dout.close();
            s.close();
        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

在机器 B 中运行服务器代码

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

public class MyServer {
    public static void main(String[] args) {
        try {
            ServerSocket ss = new ServerSocket(5555);
            Socket s = ss.accept(); //establishes connection 

            DataInputStream dis = new DataInputStream(s.getInputStream());

            String  str = (String) dis.readUTF();
            System.out.println("message= " + str);

            ss.close();

        } catch(Exception e) {
            System.out.println(e);
        }
    }
}

都在同一网络的机器上

但它没有运行,CMD 中也没有错误。

【问题讨论】:

标签: java sockets


【解决方案1】:

首先,当我使用“localhost”作为主机名编译代码,并在同一台机器上运行客户端和服务器应用程序时......它可以工作。服务器接收到消息并打印出来。

由此,我得出结论,代码是正确的(足够),真正的问题与您的网络有关;例如

  • 可能是路由问题。
  • 可能是防火墙问题。
  • 您的物理网络或网络接口可能有问题。

但是这些都不是编程问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-12-12
    • 2021-06-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-20
    • 1970-01-01
    • 2016-07-27
    • 2020-10-26
    相关资源
    最近更新 更多