2014-01-30 56 views
0

我编写了一个客户端程序,通过端口号2000(比如说)在Router1类的接收方法中从服务器接收纯文本。现在,我想通过另一个端口号2001在同一类Router1的发送方法中将这些数据从客户端程序发送到另一个程序(Client2)。这是允许的方式吗?可以通过两个不同的端口发送和接收数据

我得到Connection refused:connect exception

import java.io.*; 
import java.util.*; 
import java.net.*; 
import java.sql.*; 
class Router{ 
String str; 
public void receive(){ 
          try{ 
          while(true){ 
          Socket so=new Socket("localhost",2000); 
          BufferedReader br=new BufferedReader(new InputStreamReader(so.getInputStream())); 
          str=br.readLine(); 
          System.out.println("server has sent:"+str); 
          so.close();} 
            }catch(IOException e){ 
             e.printStackTrace();} 
       } 
public void send(){ 
    int i,index=0,min=100; 
    int row=2; 
    try{ 
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
     Connection cn=DriverManager.getConnection("jdbc:odbc:DSN2"); 
     Statement st=cn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE); 
     ResultSet rs=st.executeQuery("select * from Table1"); 
     //rs.absolute(row); 
     rs.next(); 
     rs.next(); 
     //System.out.println(rs.getInt(1)+"\t"+rs.getInt(2)+"\t"+rs.getInt(3)+"\t"+rs.getInt(4)+"\t"+rs.getInt(5)+"\t"+rs.getInt(6)); 
     for(i=2;i<7;i++){ 
      int value=rs.getInt(i); 
      System.out.println("hello"); 
        if(value<min){ 
       index=i; 
       min=value;} 
     } 
     System.out.println("min is"+min); 
     System.out.println("AT index"+index); 
     switch(index){ 
      case 2: 
       ioConnect(); 
       break; 
      case 3: 
       ioConnect(); 
       break; 
      case 4: 
       ioConnect(); 
       break; 
      case 5: 
       ioConnect();  
       break; 
      case 6: 
       ioConnect(); 
       break; 
     } 

    }catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 


public void ioConnect(){ 
    try{ 
     ServerSocket ss=new ServerSocket(2001); 
     Socket so=ss.accept(); 
     BufferedReader br=new BufferedReader(new InputStreamReader(System.in)); 
     System.out.println("enter the message"); 
     String str=br.readLine(); 
     PrintStream ps=new PrintStream(so.getOutputStream()); 
     ps.println(str); 
    } 
    catch(Exception e){ 
     e.printStackTrace(); 
    } 
} 
} 
class Router1{ 
public static void main(String s[]){ 
    Router obj=new Router(); 
    obj.receive(); 
    obj.send(); 
} 
} 
+0

基本上它是允许的。但它取决于你的代码,如果它甚至可以工作! – bobbel

+0

对两个端口使用相同的套接字吗? – icbytes

+0

@icbytes否我使用不同的套接字 – Intriguing

回答

4

确定它是允许的。拒绝连接意味着没有任何监听端口,所以你的程序显然不能正常工作。

0

如果你的Client2程序运行在不同的端口上,这是可能的。例如,可以有两个java进程在不同的端口上运行在同一个系统上。他们总是可以在他们正在收听的端口上进行通信

+0

我有一个单一的程序名为Router1.In Router1两种方法1.receive 2.send.In接收端口号连接到服务器是2000年,在发送我使用2001年发送到另一个程序命名为Router2。 – Intriguing

+0

ROuter1和Router2在同一个java进程上运行? –

+0

Router1和Router2是不同的程序 – Intriguing

相关问题