繁体   English   中英

来自不同PC的不同客户端使用Java中的ip与服务器通信

[英]different client from different pc communicate with server using ip in java

我正在为聊天应用程序使用java.nio package 但是,它只能在本地主机中连接不同的客户端。 如何连接来自不同IP地址的多个客户端?

目前,我正在使用以下代码连接到客户端:

InetAddress.getByName("10.10.10.172");

我希望能够将IP地址为10.10.10.123的客户端中的消息发送到IP地址为10.10.10.124的服务器中。

谢谢!

我认为与您使用单台PC的方式相同。

我开始之前的另一件事..10.10.10.777和10.10.10.888是无效的IP

IPv4的点分十进制格式为0-255

0-网络地址255-BroadCast地址

0和255不用于将ip赋予计算机 ... 使用1-254。

尝试使用1024以上的端口 ,这些端口被称为众所周知的端口,用于运行各种服务,例如SMTP,FTP,HTTP,TELNET等。

认为要记住。。。

  1. 关闭防火墙 ,或者要在其中运行服务器的端口的防火墙规则中添加例外

  2. 创建单独的线程以在服务器端处理多个客户端。

例如:

The Server side code example:


public class ServerTest {

    ServerSocket s;

    public void go() {

        try {
            s = new ServerSocket(44457);

            while (true) {

                Socket incoming = s.accept();
                Thread t = new Thread(new MyCon(incoming));
                t.start();
            }
        } catch (IOException e) {

            e.printStackTrace();
        }

    }

    class MyCon implements Runnable {

        Socket incoming;

        public MyCon(Socket incoming) {

            this.incoming = incoming;
        }

        @Override
        public void run() {

            try {
                PrintWriter pw = new PrintWriter(incoming.getOutputStream(),
                        true);
                InputStreamReader isr = new InputStreamReader(
                        incoming.getInputStream());
                BufferedReader br = new BufferedReader(isr);
                String inp = null;

                boolean isDone = true;

                System.out.println("TYPE : BYE");
                System.out.println();
                while (isDone && ((inp = br.readLine()) != null)) {

                    System.out.println(inp);
                    if (inp.trim().equals("BYE")) {
                        System.out
                                .println("THANKS FOR CONNECTING...Bye for now");
                        isDone = false;
                        s.close();
                    }

                }
            } catch (IOException e) {
                // TODO Auto-generated catch block
                try {
                    s.close();
                } catch (IOException e1) {
                    // TODO Auto-generated catch block
                    e1.printStackTrace();
                }
                e.printStackTrace();
            }

        }

    }

    public static void main(String[] args) {

        new ServerTest().go();

    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM