最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java Socket編程(三) 服務器Sockets

 更新時間:2006年12月23日 00:00:00   作者:  
文章來源:aspcn 作者:孫雯

服務器Sockets

列表9.2是一個服務器應用程序的一部分.

列表9.2 一個簡單的服務器程序

/**
* 一個監(jiān)聽端口并提供HTML文檔的程序.
*/
class SimpleWebServer {
public static void main(String args[])
{
ServerSocket serverSocket = null;
Socket clientSocket = null;
int connects = 0;
try
{
{
// 建立一個服務器socket
serverSocket = new ServerSocket(80, 5);
while (connects < 5)
{
// 等待連接
clientSocket = serverSocket.accept();
//服務連接
ServiceClient(clientSocket);
connects++;
}
serverSocket.close();
}
catch (IOException ioe)
{
System.out.println("Error in SimpleWebServer: " + ioe);
}
}
public static void ServiceClient(Socket client)
throws IOException
{
DataInputStream inbound = null;
DataOutputStream outbound = null;
try
{
// 得到IO流
inbound = new DataInputStream( client.getInputStream());
outbound = new DataOutputStream( client.getOutputStream());
//格式化輸出(回應頭和很少的HTML文檔)
StringBuffer buffer = PrepareOutput();
String inputLine;
while ((inputLine = inbound.readLine()) != null)
{
//如果到了HTTP請求的尾部,就發(fā)送回應
if ( inputLine.equals("") )
{
outbound.writeBytes(buffer.toString());
break;
}
}
}
finally
{
// 清除
System.out.println("Cleaning up connection: " + client);
tln("Cleaning up connection: " + client);
outbound.close();
inbound.close();
client.close();
client.close();
}
}
服務器并不是主動地建立連接.相反地,他們是被動地監(jiān)聽一個客戶端的連接請示然后給他們服務.服務器是由類ServerSocket來建立的.下面的程序建立了一個服務器端socket并把它綁定到80端口:

ServerSocket serverSocket = new ServerSocket(80, 5);

第一個參數是服務器要監(jiān)聽的端口.第二個參數是可選的.API文檔中說明了這是一個監(jiān)聽時間,但是在傳統(tǒng)的socket程序中第二個參數是監(jiān)聽深度.一個服務器可以同時接收多個連接請求,但是每次只能處理一個.監(jiān)聽堆是一個無回答的連接請求隊列.上面的請求建立一個連接來處理最后五個請求.如果省略了后面的一個參數,則默認值是50.

ServerSocket serverSocket = new ServerSocket(80, 5);

一旦socket建立了并開始監(jiān)聽連接,進來的連接將會建立并放在監(jiān)聽堆.accetp()方法把在堆中的連接取出來.

Socket clientSocket = serverSocket.accept();

這個方法返回一個用來與來訪者對話的客戶端連接.服務器本身不可能建立對話,相反地,服務器socket會使用accept()方法來產生一個新的socket.服務器socket依舊打開并排列新的連接請求.

與客戶端socket一樣,下面的一步建立輸入和輸出流:

DataInputStream inbound = new DataInputStream( clientSocket.getInputStream() ); DataOutputStream outbound = new DataOutputStream( clientSocket.getOutputStream() );

一般的I/O操作可以在新建的流中運用.在服務器回應前它等待客戶端發(fā)送一個空白的行.當會話結束時,服務器關閉流和客戶端socket.如果在隊列中沒有請示將會出現什么情況呢?那個方法將會等待一個的到來.這個行為叫阻塞.accept()方法將會阻塞服務器線程直到一個呼叫到來.當5個連接處理完閉之后,服務器退出.任何的在隊列中的呼叫將會被取消.

所有的服務器都要有以下的基本的步驟:

1.建立一個服務器socket并開始監(jiān)聽.

2.使用accept()方法取得新的連接.

3.建立輸入和輸出流.

4.在已有的協(xié)議上產生會話.

5.關閉客戶端流和socket.

6.回到第二步或者到第七步.

7.關閉服務器socket.

相關文章

  • Java +Tomcat + SpringMVC實現頁面訪問示例解析

    Java +Tomcat + SpringMVC實現頁面訪問示例解析

    這篇文章主要介紹了Java +Tomcat + SpringMVC實現頁面訪問示例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-07-07
  • Java命名規(guī)則詳細總結

    Java命名規(guī)則詳細總結

    Class名應是首字母大寫的名詞。命名時應該使其簡潔而又具有描述性。異常類的命名,應以Exception結尾。Interface的命名規(guī)則與Class相同
    2013-10-10
  • SpringMVC框架使用 Apache POI實現導出Excel

    SpringMVC框架使用 Apache POI實現導出Excel

    Excel 作為最常用的數據處理工具之一,經常被用來存儲和展示數據,本文將介紹如何在 SpringMVC 框架中使用 Apache POI 庫來實現 Excel 文件的導出功能,有需要的可以參考一下
    2025-04-04
  • Java的@Repeatable注解使用詳細解析

    Java的@Repeatable注解使用詳細解析

    這篇文章主要介紹了Java的@Repeatable注解使用詳細解析,java8新增了注解@Repeatable,在hibernate-validator的源碼注解如@MAX、@NotNull等中,有@Repeatable注解的使用,需要的朋友可以參考下
    2024-02-02
  • SpringBoot項目集成Flyway詳細過程

    SpringBoot項目集成Flyway詳細過程

    今天帶大家學習SpringBoot項目集成Flyway詳細過程,文中有非常詳細的介紹及代碼示例,對正在學習java的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • 深入解析java中的locale

    深入解析java中的locale

    以下是對java中的locale進行了深入的分析介紹,需要的朋友可以過來參考下
    2013-08-08
  • java?啟動參數?springboot?idea詳解

    java?啟動參數?springboot?idea詳解

    這篇文章主要介紹了java?啟動參數?springboot?idea的相關知識,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-09-09
  • java項目實現圖片等比縮放

    java項目實現圖片等比縮放

    這篇文章主要為大家詳細介紹了java項目實現圖片等比縮放,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Spring?Boot+微信小程序開發(fā)平臺保存微信登錄者的個人信息

    Spring?Boot+微信小程序開發(fā)平臺保存微信登錄者的個人信息

    這篇文章主要介紹了Spring?Boot+微信小程序開發(fā)平臺保存微信登錄者的個人信息,本文主要介紹?wx.login和wx.getProfile接口,因篇幅所限,不能對其它接口做詳細介紹?,有興趣者可以查閱官方文檔
    2022-05-05
  • Java 跳出遞歸循環(huán)問題解決辦法

    Java 跳出遞歸循環(huán)問題解決辦法

    這篇文章主要介紹了 Java 跳出遞歸循環(huán)問題解決辦法的相關資料,需要的朋友可以參考下
    2017-07-07

最新評論

九龙县| 崇信县| 雅江县| 阿克陶县| 葵青区| 洪雅县| 香河县| 拜泉县| 隆安县| 军事| 新野县| 晋中市| 通河县| 抚顺县| 阜宁县| 鸡东县| 杭州市| 静乐县| 图木舒克市| 察隅县| 聊城市| 贺州市| 六枝特区| 苏尼特左旗| 亳州市| 富裕县| 行唐县| 资阳市| 金乡县| 新兴县| 巨野县| 武汉市| 张家港市| 天气| 奉新县| 延边| 宁陵县| 灵武市| 平乐县| 大田县| 温泉县|