㈠ java中Socket通信問題
第5~8位元組 用位元組數表示的消息內容長度 第9位元組 服務類型:1為響應,2為請求 第10~11位元組 源系統代號 第12~13位元組 目的系統代號消息內容:xml格式小弟之前沒有做過這樣的程序,實在是一點頭緒都沒有,那位高手能給點提示 所謂socket通常也稱作"套接字",用於描述IP地址和埠,是一個通信鏈的句柄。應用程序通常通過"套接字"向網伏者答絡發出請求或者應答網路請求。 以J2SDK-1.3為例,Socket和ServerSocket類庫位於java.net包中。ServerSocket用於伺服器端,Socket 是建立網路連接時使用的。在連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成所需的會話。對於一個網路連接來說,套接字是平等的,並沒有差別,不因為在伺服器端或在客戶端而產生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。 重要的Socket API: java.net.Socket繼承於java.lang.Object,有八個構造器,其方法並不多,下面介紹使用最頻繁的三個方法,其它方法大家可以見JDK-1.3文檔。 . Accept方法用於產生"阻塞",直到接受到一個連接,並且返回一嫌兄個客戶端的Socket對象實例。"阻塞"是一個術語,它使程序運行暫時"停留"在這個地方,直到一個會話產生,然後程序繼續;通常"阻塞"是由循環產生的。 . getInputStream方法獲得網路連接輸入,同時返回一個IutputStream對象實例,。 . getOutputStream方法連接的另一端將得到輸入,同時返回一個OutputStream對象實例。 注意:其中getInputStream和getOutputStream方法均會產生一個IOException,它必須被捕獲,因為它們返回的流對象,通常都會被另一缺慧個流對象使用。 客戶端,使用Socket對網路上某一個伺服器的某一個埠發出連接請求,一旦連接成功,打開會話;會話完成後,關閉Socket。客戶端不需要指定打開的埠,通常臨時的、動態的分配一個1024以上的埠。
㈡ java中的socket是什麼意思
所謂socket通常也稱作"套接字",用於描述IP地址和埠,是一個通信鏈的句柄。應用程序通常通過"套接字"向網路發出請求或者應答網路請求。x0dx0a以J2SDK-1.3為例,Socket和ServerSocket類庫位於java.net包中。ServerSocket用於伺服器端,Socket是建立網路連接時使用的。在連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成所需的會話。對於一個網路連接來說,套接字是平等的,並沒有差別,不因為在伺服器端或在客戶端而產生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。x0dx0a重要的Socket API:x0dx0ajava.net.Socket繼承於java.lang.Object,有八個構造器,其方法並不鬧李多,下面介紹使用最頻繁的三個方法,其它方法大家可以見JDK-1.3文檔。x0dx0a. Accept方法用於產生"阻塞",直到接受到一個連接,並且返回一個客戶端的Socket對象實例。"阻塞"是一個術語,它使程序運行暫時"停留"在這個地方,直到一個會話產生,然後程序繼續;通常"阻塞"是由循環產生的。x0dx0a. getInputStream方法獲得網路連接輸入,同時返回一個InputStream對象實例。x0dx0a. getOutputStream方法連接的另一端將得到輸入,同時返回一個OutputStream對象實例。x0dx0a注意:其中getInputStream和getOutputStream方法均會產生一個IOException,它必須被捕獲,因為它們返回的流對象,通常都會被另一個流對象使用。x0dx0a2ServerSocket類例子編輯x0dx0ax0dx0apackage com.lanber.socket;x0dx0aimport java.io.DataInputStream;x0dx0aimport java.io.DataOutputStream;x0dx0aimport java.io.IOException;x0dx0aimport java.net.ServerSocket;x0dx0aimport java.net.Socket;x0dx0apublic class ServerDemo {x0dx0a/**x0dx0a* 注意:Socket的發送與接收是需要同步進行的,即客戶端發送一條信息,伺服器必需先接收這條信息,x0dx0a* 而後才可以碰吵向客戶端發送信息,否則將會有運行時出錯。x0dx0a* @param argsx0dx0a*/笑彎侍x0dx0apublic static void main(String[] args) {x0dx0aServerSocket ss = null;x0dx0atry {x0dx0ass = new ServerSocket(8888);x0dx0a//伺服器接收到客戶端的數據後,創建與此客戶端對話的Socketx0dx0aSocket socket = ss.accept();x0dx0a//用於向客戶端發送數據的輸出流x0dx0aDataOutputStream dos = new DataOutputStream(socket.getOutputStream());x0dx0a//用於接收客戶端發來的數據的輸入流x0dx0aDataInputStream dis = new DataInputStream(socket.getInputStream());x0dx0aSystem.out.println("伺服器接收到客戶端的連接請求:" + dis.readUTF());x0dx0a//伺服器向客戶端發送連接成功確認信息x0dx0ados.writeUTF("接受連接請求,連接成功!");x0dx0a//不需要繼續使用此連接時,關閉連接x0dx0asocket.close();x0dx0ass.close();x0dx0a} catch (IOException e) {x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0a}x0dx0ax0dx0a3客戶端的例子編輯x0dx0apackage com.lanber.socket;x0dx0aimportjava.io.DataInputStream;x0dx0aimport java.io.DataOutputStream;x0dx0aimportjava.io.IOException;x0dx0aimport java.io.OutputStream;x0dx0aimport java.net.Socket;x0dx0aimport java.net.UnknownHostException;x0dx0apublic class ClientDemo {x0dx0a/**x0dx0a* @param argsx0dx0a*/x0dx0apublic static void main(String[] args) {x0dx0aSocket socket = null;x0dx0atry {x0dx0asocket = new Socket("localhost",8888);x0dx0a//獲取輸出流,用於客戶端向伺服器端發送數據x0dx0aDataOutputStream dos = new DataOutputStream(socket.getOutputStream());x0dx0a//獲取輸入流,用於接收伺服器端發送來的數據x0dx0aDataInputStream dis = new DataInputStream(socket.getInputStream());x0dx0a//客戶端向伺服器端發送數據x0dx0ados.writeUTF("我是客戶端,請求連接!");x0dx0a//列印出從伺服器端接收到的數據x0dx0aSystem.out.println(dis.readUTF());x0dx0a//不需要繼續使用此連接時,記得關閉哦x0dx0asocket.close();x0dx0a} catch (UnknownHostException e) {x0dx0ae.printStackTrace();x0dx0a} catch (IOException e) {x0dx0ae.printStackTrace();x0dx0a}x0dx0a}x0dx0a}
㈢ 關於 java socket的消息推送問題
使用線程池會比較好。方便管理。你也要對鏈接的線程做一個限制,無限的鏈接創建線程會耗盡內存的。比如:
{
;
;
publicNetworkService(intport,intpoolSize)
throwsIOException{
serverSocket=newServerSocket(port);
pool=Executors.newFixedThreadPool(poolSize);
}
publicvoidrun(){//runtheservice
try{
for(;;){
pool.execute(newHandler(serverSocket.accept()));
}
}catch(IOExceptionex){
pool.shutdown();
}
}
}
{
privatefinalSocketsocket;
Handler(Socketsocket){this.socket=socket;}
publicvoidrun(){
//readandservicerequestonsocket
}
}
在沒有消息的時候,線程要處於wait狀態,當有消息的時候,用notify來激活。
㈣ java關於socket多連接
因為沒有客戶端連接或者沒有伺服器端支持。。。。 最好寫個死循環,來等待客戶端的連接,用伺服器端用線程做,分別做客戶端和伺服器端, 然後先開啟伺服器端 來等待連接,然後開啟客戶端。。否則就會出錯。
㈤ java Socket 類
樓主:
你好!
在回答你問題前想先問你一下,你是在自己機器上做 客戶端/伺服器端的測試對吧?
如果是自己本地做這個測試,你會寫2個類,分別是客戶端的和伺服器端的,是吧?行,如果這樣的話,你肯定會在伺服器端那個類里自己寫一個埠,也就是上面的port,也就是這么一句話:ServerSocket sock=new ServerSocket(8888),8888就是埠號,自己隨便寫一個可以了。那麼,你在客戶端要連接時候可以直接用「localhost」來作為你上述的host,這是你想要的答案。也就是socket(localhost,8888)。
如果你想直接用IP的話,那麼你可以這樣做,打開「開始」--->"運行",在運行里輸入「cmd」,然後系統會調用DOS界面給你,你輸入 "ipconfig",就可以了。裡面對應的 「IP Address」就是你想要的答案了。
如果你想要連到其他已提供的伺服器,那你只要知道他的IP就可以啦。比如:新浪的、騰訊的,只要有IP就能訪問了。
祝你成功!
㈥ 什麼是java socket
java技巧經驗
http://www.mywelt.net/?q=jts
61 條面向對象設計的經驗原則
ANT 基本概念、安裝與配置
AWT 和 SWING 的強大競爭者 - SWT 簡介
Axis + Tomcat 模擬銀行存取款服務
用 Java 編寫簡單 UDP 網路通信程序
用 JBuilder9 開發 Struts 的實例
用 JFace 和 SWT 構建一個簡單的應用程序
用 Jsp 動態輸出 excel 文檔和亂碼問題的解決
用 JSP/Servlet 構建三層式管理信息系統
用 SyncML 進行異構資料庫復制
用緩沖技術提高 JSP 應用的性能和穩定性
用連接池提高 Servlet 訪問資料庫的效率
程序開發中 Debug 和 Release 之本質區別
簡單教您如何使用 Factory Method 模式
簡易使用 Apache Web 讓你的 JSP "動"起來
Enhydra 入門 - 一個有用的中間件 - Enhydra
通過 Java Swing 看透 MVC 設計模式
通過 JDBC 連接 Oracle 資料庫的十大技巧
配置 Web 應用環境實現 JSP 留言簿開發
講解如何在 C/C++ 中調用 Java 的方法
講述在 Java 中 Decorate 的三種實現方法
詳細解析 JavaBeans 與 Ejb 的區別
詳細講解怎樣在 Java 中運行其它應用程序
詳細講述 JSP、PHP 與 Java 融合的開發環境
詳細為您解析 JSP 的環境引擎 - Websphere
詳細介紹用 JBuilder9 開發的 Struts 實例
詳解 EJB 3.0 是如何簡化應用程序的開發
詳解如何利用 iText 在 JSP 中生成 PDF 報表
詳解怎樣使用 Axis 開發 Web Service 的實例
Jar 文件包間接及 Jar 命令開發實例詳解
Java 的秘密 - 將應用程序的設定存在哪裡
Java 程序的反編譯 - 再次掀起編譯熱潮
Java 編程中更新 XML 文檔的常用方法集
Java 語言入門級的十二大特色詳細介紹
Java 入門基本語法
Java 入門所需的關鍵特性與 30 個基本概念
Java 關於中文亂碼問題的解決方案與經驗
Java 列表對象的性能分析和測試應用解析
Java 初學者常用開發工具介紹圖解
Java 基礎之"介面"與"包"
Java 對象轉為 String 的幾種常用方法剖析
Java 開發中的線程安全選擇與 Swing
Java 開發為什麼需要 UML?
Java 性能優化技巧集錦
Java 伺服器端編程安全的必讀本
Java 中 Static、this、super、final 用法
Java 中的強大武器 - 對象的序列化
JavaBeans 程序開發從入門到精通教程
Javamail 操作指南 - 實例代碼解析
Jboss 的 JDBC 數據源配置步驟詳解大全
JNI 使用技巧點滴
JSP 與 ASP 的比較
JudoScript - 讓 Java 離你更近一些
Spring WebFlow - 重用與抽象框架解析 (1)
Spring WebFlow - 重用與抽象框架解析 (2)
StarSuite 6.0 和 SDK 安裝以及配置指南 (1)
StarSuite 6.0 和 SDK 安裝以及配置指南 (2)
String.getBytes() 方法中的中文編碼問題
Swing 第三方工具的設計
Tomcat5.0 + MySql 配置 JDBC,DBCP,SSL
Web Services 在 Tomcat4.0.4 的安裝和測試
初學者入門 JAVA 的 XML 編程實例解析
初學者如何快速入門 JSP 實例分析
在 Java 應用開發中如何使用線程
在 Servlet 中如何捕獲 Session 事件
大話面向對象的前世與今生
如何進行 J2SDK 和 TOMCAT 的安裝及配置
如何在Web應用中啟動後台任務的實例講解
如何為 Java 應用程序添加退出事件的處理
如何使用 Java 程序實現 Logo 畫面的編程
實例講解如何穿越防火牆訪問 EJBs
開發中利用批處理 JDBC 語句提高處理速度
怎樣用 Java 實現 MSN Messager 的功能
怎樣用 jConfig 獲取 XML 文件中的配置信息
怎樣真正的在 Struts 框架下使用時間類型
怎樣在 Java 實例開發的過程中使用進度條
怎樣為 SWT 應用程序配備內容助理功能
怎樣使用 Java Servlet 動態生成圖片詳解
手把手教您如何編寫一個動畫 Applet 實例
揭開 Java Socket 編程中的一個秘密類
教您用 Java 做一個最簡單的 Socket 通話程序
教您純 Jsp 的自定義的單個文件上載代碼
教您在 Java 開發過程中如何應對異常處理
教您如何提高 Java 代碼性能的應用解析
教您將 Java 編譯為 EXE 的幾種簡易方法
教您快速上手使用 JDOM 處理 XML 文檔的技巧
教您怎樣在 Web 應用中動態創建 PDF 文件
教您一個壓縮歸檔的實用軟體
教你如何快速成為一名 Java 初級程序員
淺談實際開發中數據源在 JDBC 中的應用
淺析 Java 中常見的 Date 類的應用技巧
淺析 JavaBean 與 EJB 的區別與應用分析
測試對 Java 開發的重要性
深入解析 Java 的新特性 assertion
專家解答 Java 常見問題集錦 25 問
從 C++ 到 Java - 理解面向對象的關鍵所在
使用 Java 把文件/目錄壓縮成 ZIP 包最新技巧
澄清 Java 的介面與繼承機制
http://www.mywelt.net/?q=jts