Java客户端/服务器套接字问题

时间:2014-09-28 17:55:22

标签: java sockets

我在将客户端和服务器连接在一起时遇到了一些问题。客户端只是试图到达服务器。

我已经在网络上完成了以下问题排查:

  • 我有端口正确转发端口(之前我做了很多次)但它仍然超时。
    • 我正在使用一个新的调制解调器,ARRIS TG862,我得到的第一个很糟糕,它根本不会打开端口。
    • 现在端口正常开放,因为我正在托管一个网站,人们可以连接,而且我还举办了一些游戏,没有任何问题。
  • 我使用的调制解调器正在使用IPv6,我不知道这是不是一个问题?
  • 我尝试了不同的端口,它仍然做同样的事情。我甚至还没有恢复到旧的调制解调器和路由器组合,它仍然无法正常工作。

我没有选择,也不知道发生了什么。

  • 服务器/客户端在localhost上正常工作,但一旦我尝试连接外部它就会失败。
  • 当服务器运行时,我可以访问canyouseeme.org,它可以看到打开的端口,我的程序退出,因为它连接到它。
  • 我使用同一台计算机进行连接和托管,这是我以前做过的,很久以前它运行良好。
  • 我也尝试使用不同的计算机相互连接(在同一网络上)。

如果有什么建议可以从哪里开始确定我的问题的原因,那将是很好的,我只是迷失在哪里从这里诊断。代码如下。如果有人认为这是我已经测试过的东西,我甚至会重试一些步骤。

客户端

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.EventListener;


public class Client{
    private static Socket socket;
    private static PrintWriter printWriter;
    private int portNumber = 1337;
    private String hostName = "234.123.1.234";//Not real IP, made up ip address to demonstrate code to stack overflow users


    public static void main(String[] args){
        new Client().validateSecurity();
    }

    public void validateSecurity(String key){
        try {
            Socket kkSocket = new Socket(hostName, portNumber);
            PrintWriter out = new PrintWriter(kkSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(
                    new InputStreamReader(kkSocket.getInputStream()));
        }catch(Exception e){

        }
    }
}

服务器

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.io.PrintWriter; 
import java.net.ServerSocket; 
import java.net.Socket; 
import java.net.UnknownHostException; 
import java.util.EventListener;

import javax.swing.JFrame;
import javax.swing.JOptionPane;


public class Server{
    private static Socket socket;
    private static PrintWriter printWriter;
    private int portNumber = 1337;


    public static void main(String[] args){
        new Server().validateSecurity("hi");
    }

    public void validateSecurity(String key){
        try
        {
            ServerSocket serverSocket = new ServerSocket(portNumber);
            System.out.println("WAITING ON CONNECTION");
            Socket clientSocket = serverSocket.accept();
            System.out.println("CONNECTION ACCEPTED");
            PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
            BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
        }catch(Exception e){
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

连接超时几乎总是表示防火墙问题。