孔雀南飞梦
2021-07-20 13:13
采纳率: 50%
浏览 37
已采纳

关于简单的java tcp协议连接不上

这个程序我试过在自己的电脑上是可以连接的,但是我吧服务端发给别人运行,我都是让别人先运行服务端然后才启动客户端的,但是两台电脑之间就是连接不上,这是为什么?
具体代码如下


```java
class Client{
    public static void main(String[] args) throws IOException {
        InetAddress inetAddress=InetAddress.getByName("fe80::ac2e:7f79:cbf5:c18f%17");//本机与给本机建立链接
        //指定要传输地端口号
        Socket socket=new Socket(inetAddress, 8899);
        //对外进行数据传输
        OutputStream outputStream = socket.getOutputStream();
        outputStream.write("能看见嘛,看见的话给我回复一下".getBytes());
        socket.shutdownOutput();//关闭传输
        //接收服务端信息
        InputStream inputStream = socket.getInputStream();
        InputStreamReader inputStreamReader=new InputStreamReader(inputStream);
        BufferedReader bufferedReader=new BufferedReader(inputStreamReader);
        String line;
        while ((line=bufferedReader.readLine())!=null){
            System.out.println(line);
        }
        //关闭资源
        outputStream.close();
        socket.close();
    }
}
class Service{
    public static void main(String[] args) throws IOException {
        System.out.println("服务端开启,等待客户端连接......");
        ServerSocket socket=new ServerSocket(8899);//指定当前端口号
        Socket accept = socket.accept();//表示可以接收客户端
        System.out.println("与"+socket.getInetAddress().getHostAddress()+"用户连接成功!");
        InputStream inputStream = accept.getInputStream();
        InputStreamReader reader=new InputStreamReader(inputStream);//转换流
        BufferedReader bufferedReader=new BufferedReader(reader);//字符流
        String line;
        while ((line=bufferedReader.readLine())!=null){
            System.out.println(line);
        }
        //给客户端回复
        OutputStream outputStream = accept.getOutputStream();
        BufferedOutputStream bufferedOutputStream=new BufferedOutputStream(outputStream);
        bufferedOutputStream.write("客户端你好,信息已接收到!".getBytes());
        //关闭流
        bufferedOutputStream.flush();
        bufferedOutputStream.close();
        bufferedReader.close();


    }
}

```

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • CSDN专家-微编程 2021-07-20 13:28
    已采纳

    1.如果你花钱买的云服务器,可以在xshell程序里使用SSH进行连接,一般也不会一个电脑可以连上,一个电脑连不上
    2.如果你使用的本地VM软件运行的虚拟机,这个情况就有很多了,首先别人的电脑和你的电脑不在同一区域使用同一个局域网,根本不可能访问到,只有一个解决办法,你花钱买云服务器从新部署,关闭防火墙,或者设置规则允许某个电脑ip访问
    如果你们使用同一个局域网,那么看看防火墙有没有关闭或者配置一下规则,允许他的电脑ip可以访问

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • sanzhong104204 2021-07-20 13:24

    先确认client和server 同一台主机能不能连上。如果能连上,再看看ip是否本地回环地址,如果不是,再看是不是server所在机器防火墙限制,最后,地址里的%17是什么?写错了?

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题