国产99福利精品视频|杨幂精品国产福利在线|国精品午夜福利视频不卡|欧美精品黄网站在线播放|精品国产乱码久久久久久久|国产大片中文字幕在线观看|国产肥熟女视频一区二区三区|国产乱码无码视频一区二区三区

Java Socket編程學(xué)習(xí):什么是socket?

來(lái)源:北大青鳥(niǎo)飛迅校區(qū)|發(fā)布時(shí)間:2013-04-24 10:55:33

  所謂socket通常也稱(chēng)作“套接字”,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過(guò)“套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。本文將Java Socket編程分為三個(gè)學(xué)習(xí)步驟,逐一為您講解。

  第一步 充分理解Socket

  1、什么是socket

  所謂socket通常也稱(chēng)作“套接字”,用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過(guò)“套接字”向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。

  以J2SDK-1.3為例,Socket和ServerSocket類(lèi)庫(kù)位于java.net包中。ServerSocket用于服務(wù)器端,Socket是建立網(wǎng)絡(luò)連接時(shí)使用的。在連接成功時(shí),應(yīng)用程序兩端都會(huì)產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會(huì)話(huà)。對(duì)于一個(gè)網(wǎng)絡(luò)連接來(lái)說(shuō),套接字是平等的,并沒(méi)有差別,不因?yàn)樵诜⻊?wù)器端或在客戶(hù)端而產(chǎn)生不同級(jí)別。不管是Socket還是ServerSocket它們的工作都是通過(guò)SocketImpl類(lèi)及其子類(lèi)完成的。

  重要的Socket API:

  java.net.Socket繼承于java.lang.Object,有八個(gè)構(gòu)造器,其方法并不多,下面介紹使用最頻繁的三個(gè)方法,其它方法大家可以見(jiàn)JDK-1.3文檔。

  .Accept方法用于產(chǎn)生“阻塞”,直到接受到一個(gè)連接,并且返回一個(gè)客戶(hù)端的Socket對(duì)象實(shí)例。“阻塞”是一個(gè)術(shù)語(yǔ),它使程序運(yùn)行暫時(shí)“停留”在這個(gè)地方,直到一個(gè)會(huì)話(huà)產(chǎn)生,然后程序繼續(xù);通常“阻塞”是由循環(huán)產(chǎn)生的。

  .getInputStream方法獲得網(wǎng)絡(luò)連接輸入,同時(shí)返回一個(gè)IutputStream對(duì)象實(shí)例,。

  .getOutputStream方法連接的另一端將得到輸入,同時(shí)返回一個(gè)OutputStream對(duì)象實(shí)例。

  注意:其中g(shù)etInputStream和getOutputStream方法均會(huì)產(chǎn)生一個(gè)IOException,它必須被捕獲,因?yàn)樗鼈兎祷氐牧鲗?duì)象,通常都會(huì)被另一個(gè)流對(duì)象使用。

  2、如何開(kāi)發(fā)一個(gè)Server-Client模型的程序

  開(kāi)發(fā)原理:

  服務(wù)器,使用ServerSocket監(jiān)聽(tīng)指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶(hù)連接請(qǐng)求,客戶(hù)連接后,會(huì)話(huà)產(chǎn)生;在完成會(huì)話(huà)后,關(guān)閉連接。

  客戶(hù)端,使用Socket對(duì)網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā)出連接請(qǐng)求,一旦連接成功,打開(kāi)會(huì)話(huà);會(huì)話(huà)完成后,關(guān)閉Socket?蛻(hù)端不需要指定打開(kāi)的端口,通常臨時(shí)的、動(dòng)態(tài)的分配一個(gè)1024以上的端口。

  {建立服務(wù)器}

  import java.net.*;

  import java.io.*;

  public class Server

  {

  private ServerSocket ss;

  private Socket socket;

  private BufferedReader in;

  private PrintWriter out;

  public Server()

  {

  try

  {

  ss = new ServerSocket(10000);

上一篇:用JAVA開(kāi)發(fā)程序有哪些優(yōu)勢(shì)?
下一篇:Java截取字符串處理方法?

熱門(mén)話(huà)題

招生熱線(xiàn): 4008-0731-86 / 0731-82186801

學(xué)校地址: 長(zhǎng)沙市天心區(qū)團(tuán)結(jié)路6號(hào)

Copyright © 2006 | 湖南大計(jì)信息科技有限公司 版權(quán)所有

湘ICP備14017520號(hào)-3

關(guān)注我們
在線(xiàn)咨詢(xún)
嘿,我來(lái)幫您!