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

发布于 2021-01-30 16:58:58

客户程序

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);
        }

当我将客户端中的server_IP更改为“本地主机”时,如何使用ip地址和端口号(客户端在与服务器不同的计算机上运行)连接到服务器套接字,所以它非常有用。

关注者
0
被浏览
80
1 个回答
  • 面试哥
    面试哥 2021-01-30
    为面试而生,有面试问题,就找面试哥。

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

    Socket socket = new Socket(server_IP,server_Port);
    

    因此,您可以使用:

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

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

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

    http://www.wikihow.com/Set-Up-Port-Forwarding-on-a-
    Router

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



推荐阅读
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看