Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有线程执行的Java套接字_Java_Sockets_Multithreading - Fatal编程技术网

具有线程执行的Java套接字

具有线程执行的Java套接字,java,sockets,multithreading,Java,Sockets,Multithreading,我编写了一个套接字侦听器,它应该侦听端口80和81,当数据到达这些端口时,对这些数据执行操作。我希望此侦听器同时侦听这两个端口,并按以下方式进行编码 import java.net.*; import java.io.*; import java.text.DateFormat; import java.text.SimpleDateFormat; public class MultipleSocketServer implements Runnable {

我编写了一个套接字侦听器,它应该侦听端口80和81,当数据到达这些端口时,对这些数据执行操作。我希望此侦听器同时侦听这两个端口,并按以下方式进行编码

 import java.net.*;
    import java.io.*;
    import java.text.DateFormat;
    import java.text.SimpleDateFormat;

    public class MultipleSocketServer implements Runnable {

     private int a;
  private ServerSocket connection;
  private String TimeStamp;
  private int ID;
public static void main(String[] args){

       // System.out.print("ip");
     // String gh="12345";
      //System.out.println(gh.substring(1,3));
  int port = 80;
  int port1 = 81;
  int count = 0;
  double a=234.52121;

   //System.out.println(bf3.toString());
    try{

      ServerSocket socket1 = new ServerSocket(port);
      ServerSocket socket2=new ServerSocket(port1);
      System.out.println("MultipleSocketServer Initialized");
      Runnable runnable = new MultipleSocketServer(socket1, ++count);
        Runnable run = new MultipleSocketServer(socket2, ++count);
        Thread thread = new Thread(runnable);
        Thread thread1 = new Thread(run);
      while (true) {
        //Socket connection = socket1.accept();

        thread.start();
        thread1.start();
      }
    }

    catch (Exception e) {}
  }
MultipleSocketServer(ServerSocket s, int i) {
  this.connection = s;
  this.ID = i;
}
public void run() {
    while(true){


    try {
        Socket incoming=connection.accept();


            BufferedInputStream is = new BufferedInputStream(incoming.getInputStream());
            int character;
     while((character = is.read())!=-1) {
    .
    .
    do the input data handling here
    .
    .

    }
    }
    catch(Exception e){}
    }
    }
}
但由于某些原因,这似乎没有显示线程/连接的当前行为。 我正在使用Hyperterminal测试这段代码,每次我从Hyperterminal断开连接时,程序执行就会停止,并引发“套接字关闭”异常

任何指点都会大有帮助


干杯

你在一个无休止的循环中启动线程

while (true) {
  //Socket connection = socket1.accept();
  thread.start();
  thread1.start();
}
我认为,这是处理(忽略)在


但是,我怀疑您描述的问题存在于您未包含的处理代码中。一个非常明显的想法是:你不调用
connection.close()
,而是调用
incoming.close()
,是吗?

你在无休止的循环中启动线程

while (true) {
  //Socket connection = socket1.accept();
  thread.start();
  thread1.start();
}
我认为,这是处理(忽略)在


但是,我怀疑您描述的问题存在于您未包含的处理代码中。一个非常明显的想法是:你不调用
connection.close()
,而是调用
incoming.close()
,是吗?

@sfusseneger:谢谢你,你是救命恩人。同时,我不敢相信我是一个多么愚蠢的人D代码结构多次更改的结果,我猜:)@sfussenger:谢谢你,你是救命恩人。同时,我不敢相信我是一个多么愚蠢的人D代码结构多次更改的结果,我猜:)