这个程序我试过在自己的电脑上是可以连接的,但是我吧服务端发给别人运行,我都是让别人先运行服务端然后才启动客户端的,但是两台电脑之间就是连接不上,这是为什么?
具体代码如下
```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();
}
}
```
1.如果你花钱买的云服务器,可以在xshell程序里使用SSH进行连接,一般也不会一个电脑可以连上,一个电脑连不上
2.如果你使用的本地VM软件运行的虚拟机,这个情况就有很多了,首先别人的电脑和你的电脑不在同一区域使用同一个局域网,根本不可能访问到,只有一个解决办法,你花钱买云服务器从新部署,关闭防火墙,或者设置规则允许某个电脑ip访问
如果你们使用同一个局域网,那么看看防火墙有没有关闭或者配置一下规则,允许他的电脑ip可以访问
先确认client和server 同一台主机能不能连上。如果能连上,再看看ip是否本地回环地址,如果不是,再看是不是server所在机器防火墙限制,最后,地址里的%17是什么?写错了?