[英]Java sockets with thread execution
我編寫了一個套接字偵聽器,該偵聽器應偵聽端口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){}
}
}
}
但是由於某種原因,這似乎沒有顯示線程/並發行為。 我正在使用超級終端測試此代碼,並且每次我從超級終端斷開連接時,程序執行都會停止,並且會引發“套接字已關閉”異常。
任何指針都會有很大幫助
干杯
您正在無休止的循環中啟動線程。
while (true) {
//Socket connection = socket1.accept();
thread.start();
thread1.start();
}
但我認為,這是在
} catch (Exception e) {}
但是,我懷疑您描述的問題在您未包含的處理代碼中。 一個很明顯的主意:您不調用connection.close()
而不是來incoming.close()
嗎?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.