我在本地建立一个Socket服务端和客户端。先启动的服务端,正常启动,客户端启动时报错:java.net.ConnectException: Connection refused: connect,连接被拒绝,我的防火墙已经关闭了啊。到底是什么问题呢。
cilent:
package ss;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
public class aa {
Socket client;
PrintWriter pw;
public aa() throws UnknownHostException, IOException {
client=new Socket(InetAddress.getLocalHost(),7777);
pw=new PrintWriter(client.getOutputStream());
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
pw.write(br.readLine());
pw.close();
br.close();
}
public static void main(String[] args) {
try {
new aa();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
服务端:
package ss;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import test.Server;
public class ser{
private Socket socket;
private ServerSocket ss;
public ser() throws IOException {
ss = new ServerSocket(7777);
while (true) {
socket = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
System.out.println("you input is : " + br.readLine());
}
}
public static void main(String[] args) {
try {
new Server();
} catch (Exception e) {
e.printStackTrace();
}
}
}
[quote]我是先启动服务端的,而且是在服务端没有关闭的情况下启动的客户端。但是就是有报错呀。我冤啊。。。 [/quote]
我没错啊。我只是把你的new Server()改成了new ser()就好了。
client=new Socket(InetAddress.getLocalHost(),7777);
换成127.0.0.1以及具体的IP试试
[code="java"] client=new Socket(InetAddress.getLocalHost(),7777); [/code]
你确定Socket服务器IP获得了?
晕,我帮你看了。不报任何错误,是你操作的问题,比如你把服务器启动了,这个时候就不要关,直接另外启动客户端就行了。估计你是在启动服务器了之后,又关掉了,然后启动的客户端。
没有任何问题的
new Server().ser();
你没调这个方法。。。。
package ss;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import test.Server;
public class ser{
private Socket socket;
private ServerSocket ss;
public ser() throws IOException {
ss = new ServerSocket(7777);
while (true) {
socket = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
System.out.println("you input is : " + br.readLine());
}
}
public static void main(String[] args) {
try {
new Server()[color=red].ser()[/color];
} catch (Exception e) {
e.printStackTrace();
}
}
}
你的代码根本没有监听服务嘛!
你好,请你在运行服务端之后,用工具(比如,Tcpview)查看一下,看看 7777 这个端口是否已经被使用。同时,保证,在启动前 7777 端口处于未使用中。
new Server()应该是new ser(),是lz不小心写错的应该,反正我就这样就好了。
你new Server()之后没有调用ser()方法,就没有 new ServerSocket(7777); 就没有进入while true,就没有accept啊!
也可以运行 cmd-netstat -nao 看下你serverSocket所监听的端口有没有存在。
[quote]问题补充:
freish 写道
package ss;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import test.Server;
public class ser{
private Socket socket;
private ServerSocket ss;
public ser() throws IOException {
ss = new ServerSocket(7777);
while (true) {
socket = ss.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(socket
.getInputStream()));
System.out.println("you input is : " + br.readLine());
}
}
public static void main(String[] args) {
try {
new Server().ser();
} catch (Exception e) {
e.printStackTrace();
}
}
}
你的代码根本没有监听服务嘛!
大哥。这个是无参构造啊。。
[/quote]
我看走眼了,你为什么不是new ser()?new Server()是什么?Server的代码在哪里