1. 請教一下用java和用C實現socket網路通信哪個效率更高高分求,在線等。
肯定C的效率高,java舍掉了一些效率,但是他的優點是跨平台。
2. java編寫socket服務端有什麼優缺點
根據異常提示:"Address already in use : JVM——Bind " 。地址已被綁定,你查看下是否有未關閉的埠9999已被佔用,你應該運行過一次相同埠號的程序,但是未關閉。
3. java、c、c++、php或者其他編程語言,哪種語言做socket伺服器端性能好。
伺服器的核心一般都是C和匯編因為效率高~
外層封裝看哪個支持的資料多用哪個
4. java socket多線程問題,我寫了一個socket tcp服務端,高手來進來看下,謝啦。是關於多客戶端並聯的問題
不對,你應該單獨寫個一個處理線程類,如果需要的連接就new一下,因為每次new一下,專線程的名字都不一樣,但屬如果後期要用到銷毀的時候,最好寫一個hasMap存儲這些線程,當下線時,就根據values來銷毀或遍歷一下hasMap,獲取到線程的名字,然後就destroy();
韓順平java視頻教程里的qq項目里有詳細的解說!
5. 編寫高性能Java伺服器,應該選用何種方案
所謂的高性能其實都是和業務緊密相關的,比如處理時間長短,長鏈接還是短鏈接,內連接的數量等。容
根據業務特性來選擇是否用BIO或者NIO,比如NIO擅長處理的是海量連接。
另外java.util.concurrent的線程池模型還是java.nio中的Selector模型,這兩者並不沖突,況且這兩者解決的問題是不一樣的。線程池模型解決的是連接創建的消耗問題,Selector模型解決的是IO復用等問題。。
6. 用java寫一個socket的伺服器在電腦上運行
理論上可以,同在一個區域網,
7. java Socket編程實現的最簡單的多線程Web伺服器
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class Test {
public static void main(String[] args) throws Exception {
ServerSocket server = new ServerSocket(888);
while(true) {
Socket s = server.accept();
Processer p = new Processer(s);
Thread t = new Thread(p);
t.start();
}
}
}
class Processer implements Runnable {
private Socket socket;
public Processer(Socket s) {
// TODO Auto-generated constructor stub
this.socket = s;
}
@Override
public void run() {
try {
PrintWriter out=new PrintWriter(socket.getOutputStream(),true);
out.println("HTTP/1.0 200 OK");
out.println("Content-Type:text/html;charset=utf-8");
out.println();
out.println("<h1> Web伺服器測試成功!</h1>");
out.close();
} catch(Exception ex) {
ex.printStackTrace();
} finally {
try {
socket.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
8. 關於JAVA非阻塞SOCKET伺服器寫一個對戰游戲伺服器的實例。
直接用數組或者集合來保存。
服務端socket在線程中等待連接,一旦獲取到連接就保存返回的socket句柄,啟動一個新的線程來從socket中讀取消息。
9. 求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的內容(內容很多,了解基本的就可以)
網上應該有類似代碼,可以用來參考。
10. java的客戶端用的是Socket,伺服器端用SocketChannel,這兩種能實現通信么 說得比較白,望理解
Socket 和ServerSocke 是一對 他們是java.net下面實現socket通信的類
SocketChannel 和ServerSocketChannel是一對 他們是java.nio下面實現通信的類 支持非同步通信
伺服器回必須先建答立ServerSocket或者ServerSocketChannel 來等待客戶端的連接
客戶端必須建立相對應的Socket或者SocketChannel來與伺服器建立連接
伺服器接受到客戶端的連接受,再生成一個Socket或者SocketChannel與此客戶端通信
不過Socket和SocketChannel可以通過 socket.channel() SocketChannel.socket() 方法相互轉換
同理ServerSocket 和ServerSocketChannel 也可以相互轉換