Java - 套接字编程/阻塞端口

时间:2013-09-26 14:30:46

标签: java sockets port

我正在尝试使用8080端口连接到任何网站并从服务器打印第一个输入的客户端的简单示例。但我甚至无法连接到服务器。 通过Wireshark检查TCP的标头,我意识到服务器没有回答。 我已经关闭了我的防火墙,防病毒并在我的路由器中设置转发端口,但我仍然无法连接到服务器。

这是我的代码:

import java.io.IOException;
import java.io.InputStream;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;


public class ProtocoloX {
    //private byte[] bytes = new byte[1024];
    private byte[] bytes = new byte[]{(byte) 0xC6, 0x57, 0x54, (byte) 0x95, 0x5E, (byte) 0x9E, 0x6B, (byte) 0xC6, 0x55, 0x17, 0x55,0x52, (byte) 0x9E, 0x21};
    private Socket cliente;
    private final String HOST = "stackoverflow.com";
    private final int PORT = 8080;

    public boolean connect(){
        this.cliente = new Socket();
        System.out.println("-- Trying to connect: "+HOST+":"+PORT);
        InetSocketAddress socketAddress = new InetSocketAddress(HOST, PORT); 
        try {
            this.cliente.connect(socketAddress, 10000000);
        } catch (IOException e) {
            System.out.println(e);
            System.out.println("-- CONNECTION PROBLEM ");
            return false;
        }
        System.out.println("-- Connection successful");
        return true;
    }

    private void receive(){
        InputStream stream = null;  
        System.out.println("-- Reading data...");
        try {
            stream = this.cliente.getInputStream();
            try {
                int count = stream.read(this.bytes);
                System.out.println("count:"+count);
                System.out.println("bytes:"+this.bytes);
            } catch (IOException e) {
                System.out.println("-- DATA READING PROBLEM");
                e.printStackTrace();
            }
        } catch (IOException e) {
            System.out.println("-- DATA READING PROBLEM");
            e.printStackTrace();
        }
        System.out.println("-- Data read successful");
    }


    public static void main(String[] args) throws UnknownHostException, IOException {
        ProtocoloX protocolo = new ProtocoloX();
        if(protocolo.connect()){
            protocolo.receive();
        }

    }
}

可能导致问题的原因是什么? 谢谢:D

2 个答案:

答案 0 :(得分:0)

您不会在端口8080上获得任何内容而是尝试'80'。 80是互联网网站监听请求的默认http端口。

答案 1 :(得分:0)

许多WAN网站不会响应明确指定的端口查询。例如,访问网络浏览器中的http://www.stackoverflow.com:8080也不会得到响应。验证要连接的服务器是否接受8080端口上的连接。