java.net.ConnectException: Connection refused: connect

来源:百度知道 编辑:UC知道 时间:2024/05/18 16:17:07
package cn.qn;
import java.net.*;
import java.io.*;
public class Lesson12 {

/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
if(args.length>0){
server();
}
else{
client();
}
}
public static void server(){
try{
ServerSocket ss=new ServerSocket(6000);
Socket sk=ss.accept();
OutputStream ops=sk.getOutputStream();
InputStream ips=sk.getInputStream();
ops.write("Hello,Welcome you!".getBytes());
byte [] buf=new byte[100];
int len=ips.read(buf);
System.out.println(new String(buf,0,len));
ops.close();
ips.close();
sk.close();
ss.close();
}catch(Exception ex){
ex.printStackTrace();
}

}
public static void client(){
try{
Socket s=new Socket(InetAddress.getByName(null),600

这个程序你运行的方式就是错的,仔细看main方法里:
if(args.length>0){
server();
}
else{
client();
}
也就是说,这个程序要运行两次才能达到预期的结果(在DOS命令里运行的话,要开两个DOS命令窗口),
一、在控制台运行的时候要输入参数,即给args〔〕里的元素赋值,那样就满足args.length>0了,就可以通过server();方法运行服务器了。
二、控制台不要参数,那样就满足args.length=0了,而不是大于0,就可以通过client(); 方法运行客户端和先前运行的服务器连接了。

(必须先运行服务器再运行客户端,次序不能颠倒,也就是必须先有接收的,在有发送的,不然发送的地方没有接收的,肯定会出Connection refused: connect 之类的错误)

这样才能达到程序的目的。如果还有更基础的东西不明白,再说。