激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - 基于Socket類以及ServerSocket類的實例講解

基于Socket類以及ServerSocket類的實例講解

2021-01-07 13:23半城楓葉半城雨丶 Java教程

下面小編就為大家帶來一篇基于Socket類以及ServerSocket類的實例講解。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Socket類

套接字是網絡連接的端點,套接字使應用可以從網絡中讀取數據,可以向網絡中寫入數據。不同計算機上的兩個應用程序可以通過連接發送或接收字節流,以此達到相互通信的目的。

為了從一個應用程序向另一個應用程序發送消息,需要知道另一個應用程序中套接字的 IP 地址和端口號,在java中,套接字由java.net.Socket 表示。

要創建一個套接字,可以使用Socket類中眾多構造函數中的一個。其中一個構造函數接收兩個參數:主機號和端口號。

?
1
public Socket (String host, int port)

其中參數host是遠程主機的名稱或IP地址,參數port是連接遠程應用程序的端口號,例如,想要通過80端口連接yahoo.com,可以使用如下語句創建Socket對象

?
1
new Socket ("yahoo.com", 80);

一旦成功創建了Socket類的實例,就可以使用該實例發送或接收字節流,要發送字節流,需要調用Socket類的getOutputStream() 方法獲取一個java.io.OutputStream對象,

要發送文本到遠程應用程序,通常需要使用返回的OutputStream對象創建一個java.io.PrintWriter對象。若想要從連接的另一端接收字節流,需要調用Socket類的getInputStream()

方法,該方法會返回一個java.io.InputStream對象。

下面的代碼創建了一個套接字,用于與本地Http服務器進行通信,發送HTTP請求,接收服務器的相應信息,以下代碼創建了一個StringBuffer對象來保存信息,并輸出。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
Socket socket = new Socket("127.0.0.1", "8080");
OutputStream os = socket.getOutputStream();
boolean autoflush = true;
PrintWriter out = new PrintWriter(
 socket.getOutputStream(), autoflush);
 
BufferedReader in = new BufferedReader(
 new InputStreamReader(socket.getInputStream()));
//send an HTTP request to the web server
out.println("GET /index.jsp HTTP/1.1");
out.println("Host: localhost:8080");
out.println("Connection Close");
out.println();
 
//read the response
boolean loop = true;
StringBuffer sb = new StringBuffer(8096);
while (loop) {
   if (in.ready()) {
    int i = 0;
    while (i != -1){
     i = in.read();
     sb.append((char) i);
    }
    loop = flase;
   }
   Thread.currentThread().sleep(50);
  }
System.out.println(sb.toString());
socket.close();

ServerSocket類

Socket類表示一個客戶端套接字,即,當想要連接遠程服務器應用程序時創建的套接字。但如果你想要實現一個服務器應用程序(例如一個HTTP服務器或FTP服務器),

你需要另一種方法,因為服務器必須時刻待命,它并不知道客戶端應用程序會在什么時候發起連接,正因為如此,需要使用java.net.ServerSocket類。這是服務器套接字的實現。

ServerSocket類和Socket類并不相同,服務器套接字要等待來自客戶端的連接請求,當服務器套接字收到了連接請求后,它會創建一個Socket實例來處理與客戶端的通信。

要創建一個服務器套接字,可以使用ServerSocket類提供的4個構造函數中的任意一個,需要指明IP地址和服務器套接字偵聽的端口號,典型情況下,IP地址可以為127.0.0.1,

即服務器套接字會偵聽本地機器接收到的連接請求,服務器套接字偵聽的IP地址稱為綁定地址。服務器套接字的另一個重要屬性是backlog,后者表示在服務器拒絕接收傳入的

請求之前,傳入的連接請求的最大隊列長度。

ServerSocket類的其中一個構造函數的簽名如下:

?
1
public ServerSocket (int port, int backLog, InetAddress bindingAddress);

值得注意的是,在這個構造函數中,參數綁定地址必須是java.net.InetAddress類的實例。創建InetAddress對象的一種簡單方法是調用其靜態方法getByName(),

傳入包含主機名的字符串,代碼如下所示:

?
1
InetAddress.getByName("127.0.0.1");

下面的一行代碼創建了一個ServerSocket對象,ServerSocket對象偵聽本地主機的8080端口,其backlog值為1;

?
1
new ServerSocket(8080, 1, InetAddress.getByName("127.0.01"));

創建了ServerSocket實例后,可以使其等待傳入的連接請求,該連接請求會通過服務器套接字偵聽的端口上綁定地址傳入,這些工作可以通過調通ServerSocket類的accept方法

完成。只有當接收到連接請求后,該方法才會返回,其返回值是一個Socket實例,然后,就可以如上所述使用該Socket對象與客戶端應用程序進行字節流的發送/接收。

以上這篇基于Socket類以及ServerSocket類的實例講解就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持服務器之家。

原文鏈接:http://www.cnblogs.com/xinde123/archive/2017/09/20/7563185.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产九九在线视频 | 黄色免费视频在线 | 爱逼av| 欧美a黄| 精品久久久久久亚洲精品 | 一级黄色免费观看视频 | 性aaa | 91,视频免费看 | 欧美一级欧美 | 精品二区在线观看 | 黄色免费小视频网站 | 夜间福利网站 | 福利在线国产 | 欧美老外a级毛片 | 国产拍拍拍三级费视频在线观看 | 色污视频在线观看 | 爱看久久| 国产午夜精品一区二区三区在线观看 | 亚洲精品午夜在线 | 国产精品色综合 | 欧美视频一区二区三区 | 成人福利在线视频 | 欧美 中文字幕 | 内地av在线| 亚洲一区在线免费视频 | 综合在线一区 | 黄色毛片免费看 | 国产不卡av在线 | 午夜精品毛片 | 欧美人xx | 国产一区二区精品在线观看 | 久久超| 人人看人人艹 | 久色亚洲| 国产人成免费爽爽爽视频 | 日本在线播放一区 | av国产在线被下药迷网站 | 久久国产精品电影 | 久草视频在线资源 | 成人视屏在线 | 免费观看一区 |