㈠ java多埠監聽
序調用的這些埠(有些惡意程序可隨意改變埠功能滴),可以嘗試著把所用的應用程序和網頁都關掉然後再看一下埠的情況怎樣。最後如果樓主以後想要做一些「小實驗」或帶有一些危險性的小動作的話,推薦樓主還是考慮在虛擬機下先實驗一下真正摸清弄明白了再在自己機器上HAPPY!!~~
(虛擬機主要有vmware 及微軟的virtualpc等,都挺好用!~~)
㈡ java web應用如何獲取監聽埠號
如果是在jsp頁面上
<%
intport=request.getServerPort();
%>
如果是在controller層java代碼中
intport=request.getServerPort();//springMVC【request作為參數】或者servlet作為controller
intport=ServletActionContext.getRequest().getServerPort();//struts2版
了解一下requestjava WEB開發基礎知識
㈢ java服務端如何實現與客戶端的多個埠通信
Java裡面的Socket貌似是不支持一個埠同時和對方多個埠同時連接的
(如果可以,那說明我才疏學淺)
Java的 Socket基本思路是一個固定埠監聽,然後accept一個連接之後,本地和對方通信的埠是隨機產生的一個,而不是這個監聽的埠。
你說的這種需求,其實操作系統是支持得很好的。比如Windows里有一個網路編程模型(一種事件驅動模型)是這樣的:當某個埠上發生了某個事件時,調用事件處理的函數,然後函數里根據事件類型作出相應的處理,事件類型包括連接、收到數據、對方關閉等等。LZ可從這方面找找java有無相關的第三方庫可用。
告訴你幾個可搜索的關鍵詞WSAEventSelect (http://ke..com/view/2440218.htm)
㈣ 用java的Udp寫聊天程序,為什麼不能實現一個埠號同時向兩個埠號發送消息不知如何實現,請高手解答
使用DatagramSocket和DatagramPacket
其中DatagramSocket使用一個發送的埠號
DatagramPacket的參數
DatagramPacket(bytes[] bytes,int bytes[].length,InetAddress ip, int port);里的就是目標埠
要向兩個埠號發送,需要創建兩個DatagramPacket,分別填寫兩個IP地址和埠號,並用DatagramSocket發送。
另外兩個埠需要做監聽
要注意ip要為區域網可以暢通無阻,廣域網可能導致網管阻止
下面是個例子,發兩遍即可。
int SERVER_PORT=7000;
String severIp="192.168.1.100";
DatagramSocket clientSocket;
try
{
InetAddress local = InetAddress.getByName(severIp);
DatagramPacket dPacket;
clientSocket = new DatagramSocket;
dPacket = new DatagramPacket("Hello".getBytes("utf-8"),"Hello".getBytes("utf-8").length,
local, SERVER_PORT);
clientSocket.send(dPacket);//這里是發送
byte[] msg = new byte[11246];
DatagramPacket rPacket = new DatagramPacket(msg, msg.length);
clientSocket.receive(rPacket);//這里是接收監聽
}
catch (IOException e)
{
e.printStackTrace();
}
clientSocket.close();
㈤ java Socket編程中,為什麼監聽多個埠時出現有一個埠無法接受到信息,需要用到線程嗎
您好,提問者:
其實線程的問題還是很難解決的,因為是隨機的 。
但是也不是沒有解決辦法,是這樣的,有些功能是必須用到線程的,如果不用線程的話,可能會有接收不到的數據、停止後台超時等錯誤,建議使用線程。。。
舉例:比如坦克大戰、撲克牌,不用線程是無法完成的,也不是無法完全,就是會數據接收不到。
㈥ 如何用JAVA代碼監聽某個開放埠
比如我要監聽1234這個埠,代碼如下:
String ip = "127.0.0.1";
int port = 1234;
try {
Socket socket = new Socket(ip, port);
socket.setSoTimeout(5539900);
java.io.OutputStream out = socket.getOutputStream();
byte[] date = "hello world".getBytes();
out.write(data);
out.flush();
byte[] buffer = new byte[1024];
int len = -1;
java.io.FileOutputStream fout = new java.io.FileOutputStream(
"d:/response.txt");
java.io.ByteArrayOutputStream bout = new java.io.ByteArrayOutputStream();
java.io.InputStream in = socket.getInputStream();
while ((len = in.read(buffer, 0, buffer.length)) > 0) {
bout.write(buffer, 0, len);
}
in.close();
bout.flush();
bout.close();
byte[] rdata = bout.toByteArray();
System.out.println(new String(rdata));
fout.write(rdata);
fout.flush();
fout.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
伺服器端的
ServerSocket ss = new ServerSocket(1234);
Socket socket=null;
BufferedReader in;
PrintWriter out;
while (true) {
socket = ss.accept();
in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
out = new PrintWriter(socket.getOutputStream(),true);
String line = in.readLine();
out.println("you input is :" + line);
out.close();
in.close();
socket.close();
}
㈦ 求java寫的多線程socket埠監聽伺服器端程序,要代界面的.
業務需要這么復雜嗎???如果你要實現伺服器和客戶端都可以向對方發送消息,而不等待對方應答,只需要把InputStream和OutputStream分別放在兩個不同線程里就行了,即是說把接收流與發送流分別用一個線程監聽處理。如果要實現不分客戶端伺服器的話,用UDP通信即可
補充回答:如果不涉及到MIME,只是收發簡單文本郵件。就會比較簡單。因為就像你說的,smtp和pop3協議就是文本格式的。你用Socket建立連接後,就像讀文件一樣,一行一行的讀數據,然後按照協議分析數據格式。例如如果開始時USER那麼後面可能跟的就是用戶等。
就是一個字元串解析和匹配的過程。網上好像有這類代碼,自己找一個學習一下。我以前用C在68k上作過,不是很難。不過代碼已經沒有了。
你的是郵件客戶端,功能類似於outlook,foxmail等,如果你能上網,就不需要郵件伺服器,直接用自己的郵件賬號來測試,例如如果你有一個sina的郵件賬戶,就可以從sina伺服器收發郵件。
不過為了測試方便,還是上網去收一個郵件伺服器把。例如foxmail server等。網上有教程,可以配置好的。
對於編程,既然要求用socket編寫,那麼就要熟悉java的socket編程,這部分倒是很簡單。可能還需要看看多線程部分。
另外,你需要學習一下, smtp和pop3這兩個網路協議的內容,因為你需要解析這兩個協議。如果需要收發代附件的,還需要看mime的內容,不過估計不需要。
其實java有自己的類庫javamail,可以實現手法郵件,功能很強大。不過既然要求必須用socket,那就不能這個了。
說的太羅嗦了。總結一下:
1)配置郵件伺服器,搭建測試環境
2)熟悉java的socket編程、 Swing編程(編寫界面)、多線程(選用)
3)熟悉smtp和pop3的內容(內容很多,了解基本的就可以)
網上應該有類似代碼,可以用來參考。