【问题标题】:can a single java program send and receive data through two different ports单个java程序可以通过两个不同的端口发送和接收数据吗
【发布时间】:2014-01-30 20:26:12
【问题描述】:

我编写了一个客户端程序,它在 Router1 类的接收方法中通过端口号 2000(比如说)从服务器接收纯文本。现在我想通过同一类Router1的发送方法中的另一个端口号2001将这些数据从客户端程序发送到另一个程序(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();
}
}

【问题讨论】:

  • 基本上是允许的。但这取决于你的代码是否能工作!
  • 两个端口使用同一个套接字吗?
  • @icbytes 不,我使用不同的套接字
  • 那我们肯定需要看一些代码。

标签: java networking


【解决方案1】:

当然可以。连接被拒绝只是意味着该端口上没有任何东西在监听,因此您的程序显然没有按应有的方式工作。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 我有一个名为 Router1 的单个程序。在 Router1 中有两种方法 1.receive 2.send.In 接收连接到服务器的端口号是 2000,在发送时我使用 2001 发送到另一个名为路由器2。
    • ROuter1 和Router2 在同一个java 进程上运行?
    • Router1 和Router2 是不同的程序
    猜你喜欢
    • 2015-01-10
    • 2011-09-13
    • 2021-09-16
    • 2017-10-25
    • 1970-01-01
    • 2018-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多