當前位置:編程學習大全網 - 編程語言 - delphi怎樣用socket發送,接受record類型的數據

delphi怎樣用socket發送,接受record類型的數據

網絡應用分為客戶端和服務端兩部分,而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或域名以及端口號直接傳入構造函數即可。下面的代碼是壹個連接服務端程序的例子程序:

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 = new Socket(args[0], 80)連接通過命令行參數所指定的IP或域名的80端口。由於Socket類的構造函數在定義時使用了throws,因此,在調用Socket類的構造函數時,必須使用try…catch語句來捕捉錯誤,或者對main函數使用throws語句來拋出錯誤。

測試正確的IP

java mysocket.MyConnection 127.0.0.1

輸出結果:127.0.0.1已經連接成功!

測試錯誤的IP

java mysocket.MyConnection 10.10.10.10

輸出結果:錯誤信息:Connection timed out: connect

註:10.10.10.10是壹個並不存在的IP,如果這個IP在妳的網絡中存在,請使用其它的不存在的IP。

測試正確的域名

java mysocket.MyConnection www.ptpress.com.cn

輸出結果:www.ptpress.com.cn已經連接成功!

測試錯誤的域名

java mysocket.MyConnection www.ptpress1.com.cn

輸出結果:錯誤信息:www.ptpress1.com.cn

使用Socket類連接服務器可以判斷壹臺主機有哪些端口被打開。下面的代碼是壹個掃描本機有哪些端口被打開的程序。

  • 上一篇:Linux Shell 教程——想玩轉linux就請壹直看下去
  • 下一篇:辦公電子門鎖價格和品牌
  • copyright 2024編程學習大全網