[英]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等。
认为要记住。。。
关闭防火墙 ,或者在要在其中运行服务器的端口的防火墙规则中添加例外 。
创建单独的线程以在服务器端处理多个客户端。
例如:
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.