Сокетное программирование с использованием потоков в Java - PullRequest
0 голосов
/ 19 ноября 2011

У меня проблемы с потоками Java. В этой программе я хочу, чтобы он считывал TCP и UDP одновременно, но в моем коде только после отправки запроса TCP код переходит к UDP.

Я хочу, чтобы они работали одновременно, кто-нибудь может мне помочь?

Вот что у меня есть:

public class Newthreads {
  ServerSocket socket;
  DatagramSocket udpSocket;
  private int id=1;

  public Newthreads() throws IOException {
    socket=new ServerSocket(9000);
    udpSocket=new DatagramSocket(5000);
    System.out.println("listening on 7000");
    System.out.println("udp listening at 5000");
    ClientServerThread clientThread=new ClientServerThread(socket);``
    clientThread.start();
    SlientServerThread e =new SlientServerThread(udpSocket);
    e.start();
  }

  public static void main(String[] args) throws IOException {
    new Newthreads();
  }
}

class ClientServerThread extends Thread {
  Socket clientSocket;
  int child;
  public ClientServerThread(ServerSocket conn) throws IOException {
    //To change body of created methods use File | Settings | File Templates.
    System.out.println("i m here");
    clientSocket=conn.accept();
  }
  public void run() {
    System.out.println("executing TCP");
  }
}

class SlientServerThread extends Thread {
  Socket conn;
  DatagramPacket recvPacket;
  private byte[] recvdata=new byte[10];

  SlientServerThread(DatagramSocket tcpSocket) throws IOException {
  recvPacket=new DatagramPacket(recvdata,recvdata.length);
  tcpSocket.receive(recvPacket);
  System.out.println("hey thread 2");
}

1 Ответ

3 голосов
/ 19 ноября 2011

Вы выполняете "accept" в конструкторе ClientServerThread, который блокируется до тех пор, пока не будет установлено TCP-соединение. Вы никогда не попадете в начало потока, пока конструктор не завершит работу.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...