Java網絡編程從入門到精通(13):使用Socket類接收和發送數據 – JAVA編程語言程序開發技術文章

網絡應用分為客戶端和服務端兩部分,而Socket類是負責處理客戶端通信的Java類。通過這個類可以連接到指定IP或域名的服務器上,並且可以和服務器互相發送和接受數據。在本文及後面的數篇文章中將詳細討論Socket類的使用,內容包括Socket類基礎、各式各樣的連接方式、get和set方法、連接過程中的超時以及關閉網絡連接等。

在本文中,我們將討論使用Socket類的基本步驟和方法。一般網絡客戶端程序在連接服務程序時要進行以下三步操作。


1.         連接服務器


2.         發送和接收數據


3.         關閉網絡連接


一、連接服務器


在客戶端可以通過兩種方式來連接服務器,一種是通過IP的方式來連接服務器,而另外一種是通過域名方式來連接服務器。


其實這兩種方式從本質上來看是一種方式。在底層客戶端都是通過IP來連接服務器的,但這兩種方式有一定的差異,如果通過IP方式來連接服務端程序,客戶端隻簡單地根據IP進行連接,如果通過域名來連接服務器,客戶端必須通過DNS將域名解析成IP,然後再根據這個IP來進行連接。


在很多程序設計語言或開發工具中(如C/C++、Delphi)使用域名方式連接服務器時必須自己先將域名解析成IP,然後再通過IP進行連接,而在Java中已經將域名解析功能包含在瞭Socket類中,因此,我們隻需象使用IP一樣使用域名即可。


通過Socket類連接服務器程序最常用的方法就是通過Socket類的構造函數將IP或域名以及端口號作為參數傳入Socket類中。Socket類的構造函數有很多重載形式,在這一節隻討論其中最常用的一種形式:public Socket(String host, int port)。從這個構造函數的定義來看,隻需要將IP或域名以及端口號直接傳入構造函數即可。下面的代碼是一個連接服務端程序的例子程序:


<!–

Code highlighting produced by Actipro CodeHighlighter (freeware)
https://www.CodeHighlighter.com/

–>package mysocket;

import java.net.*;

public class MyConnection
{
    public static void main(String[] args)
    {
        try
        {
            if (args.length > 0)
            {
                Socket socket = new Socket(args[0], 80);
                System.out.println(args[0] + “已連接成功!”);
            }
            else
                System.out.println(“請指定IP或域名!”);
        }
        catch (Exception e)
        {
            System.err.println(“錯誤信息:” + e.getMessage());
        }
    }
}


在上面的中,通過命令行參數將IP或域名傳入程序,然後通過Socket socket

發佈留言