如何使用IP地址和端口号连接到服务器套接字?(客户端在与服务器不同的机器上运行) [英] How do I connect to the server socket using the ip address and port number? (client is running on a different machine than server)

查看:63
本文介绍了如何使用IP地址和端口号连接到服务器套接字?(客户端在与服务器不同的机器上运行)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

客户端程序

public class client implements Runnable {

protected static String server_IP = "141.117.57.42";
private static final int server_Port = 5555 ;
protected static String client_IP ;


public static void main(String[] args) throws IOException{
    final  String host = "localhost";
    int init = 0  ;
    
    try {
        InetAddress iAddress = InetAddress.getLocalHost();
        client_IP = iAddress.getHostAddress();
        System.out.println("Current IP address : " +client_IP);
    } catch (UnknownHostException e) {
    }
    
    try {System.out.println("hello1");
        Socket socket = new Socket(server_IP,server_Port);
        System.out.println("hello3");
        init = initialize(socket);
       
    }catch (SocketException e) {
        System.out.println("Error: Unable to connect to server port ");
    }

    
    if (init ==  0 ){
        System.out.println("error: Failed to initialize ");
        System.exit(0);
        
    }
    //Thread init_Thread = new Thread();
}
private static int initialize(Socket socket ) throws IOException{
    System.out.println("hello");
    int rt_value = 0 ;
    
    OutputStream os = socket.getOutputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    PrintWriter pw = new PrintWriter(os, true);
    
    System.out.println("server: " + br.readLine());
    pw.println("192.343.34.321");
   // BufferedReader userInputBR = new BufferedReader(new InputStreamReader(System.in));
    //String userInput = userInputBR.readLine();
    
    //out.println(userInput);
    
    socket.close();
    return rt_value = 1 ;
    
    
    
}
public void run(){
    
}
}

服务器端程序

public class server {

protected static String server_IP ;

public static void main(String[] args) throws IOException {
   
    
    int server_Port = 5555 ;



    try {
        InetAddress iAddress = InetAddress.getLocalHost();
        server_IP = iAddress.getHostAddress();
        System.out.println("Server IP address : " +server_IP);
    } catch (UnknownHostException e) {
    }
    
        ServerSocket serverSocket = new ServerSocket(server_Port);
    
    
        while (true) {
            Socket socket = serverSocket.accept();
            
             OutputStream os = socket.getOutputStream();
            PrintWriter pw = new PrintWriter(os, true);
            InputStreamReader isr = new InputStreamReader(socket.getInputStream());
            pw.println("Connection confirmed ");
            BufferedReader br = new BufferedReader(isr);
            String str = br.readLine();
            
            pw.println("your ip address is " + str);
            
            pw.close();
           //socket.close();

            //System.out.println("Just said hello to:" + str);
        }
    

如何使用ip地址和端口号连接到服务器套接字(客户端在与服务器不同的计算机上运行).

How do I connect to the server socket using the ip address and port number (client is running on a different machine than server).

当我将客户端中的server_IP更改为本地主机"时,它运行良好.

When I change the server_IP in client to "local host", it works perfectly.

推荐答案

要使用您的代码进行连接,请使用:

To connect in your code you use:

Socket socket = new Socket(server_IP,server_Port);

因此您可以使用:

Socket socket = new Socket("192.168.1.4", 5555);

看起来您的代码中有这个,所以我不确定您遇到什么问题.

It looks like you have this in your code so I'm not sure what problem you're having.

如果路由器位于本地网络之外,请不要忘记将路由器设置为转发端口.

Don't forget that you have to setup your router to forward ports if it is located outside of your local network.

http://www.wikihow.com/Set-在路由器上向上转发

请不要忘记,如果您正在运行防火墙,这也会干扰连接.

Don't forget that if you are running a firewall, this can also interfere with the connection.

这篇关于如何使用IP地址和端口号连接到服务器套接字?(客户端在与服务器不同的机器上运行)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆