999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

JAVA語(yǔ)言SOCKET機(jī)制的研究

2011-04-08 09:09:03謝智明
關(guān)鍵詞:機(jī)制

謝智明

(湖南科技學(xué)院 計(jì)算機(jī)與通信工程系,湖南 永州 425100)

JAVA語(yǔ)言SOCKET機(jī)制的研究

謝智明

(湖南科技學(xué)院 計(jì)算機(jī)與通信工程系,湖南 永州 425100)

本文研究了JAVA語(yǔ)言SOCKET機(jī)制,闡述了輸入/輸出流的概念,并應(yīng)用這一機(jī)制實(shí)現(xiàn)了C/S模式下網(wǎng)絡(luò)通信。

JAVA;網(wǎng)絡(luò);SOCKET

1 Socket 機(jī)制

Socket是面向客戶/服務(wù)器模型設(shè)計(jì)的,網(wǎng)絡(luò)上的兩個(gè)程序通過(guò)一個(gè)雙向的通訊連接實(shí)現(xiàn)數(shù)據(jù)的交換,這個(gè)雙向鏈路的一端稱為一個(gè)Socket。 Socket通常用來(lái)實(shí)現(xiàn)客戶方和服

務(wù)方的連接。客戶程序可以向 Socket寫(xiě)請(qǐng)求,服務(wù)器將處理此請(qǐng)求,然后通過(guò)Socket將結(jié)果返回給用戶。

Socket通信機(jī)制提供了兩種通訊方式:有聯(lián)接和無(wú)聯(lián)接方式,分別面向不同的應(yīng)用需求。使用有聯(lián)接方式時(shí),通信鏈路提供了可靠的,全雙工的字節(jié)流服務(wù)。在該方式下,通信雙方必須創(chuàng)建一個(gè)聯(lián)接過(guò)程并建立一條通訊鏈路,以后的網(wǎng)絡(luò)通信操作完全在這一對(duì)進(jìn)程之間進(jìn)行,通信完畢關(guān)閉此聯(lián)接過(guò)程。使用無(wú)聯(lián)接方式時(shí)其系統(tǒng)開(kāi)銷(xiāo)比無(wú)聯(lián)接方式小,但通信鏈路提供了不可靠的數(shù)據(jù)報(bào)服務(wù),不能保證信源所傳輸?shù)臄?shù)據(jù)一定能夠到達(dá)信宿。在該方式下,通信雙方不必創(chuàng)建一個(gè)聯(lián)接過(guò)程和建立一條通訊鏈路,網(wǎng)絡(luò)通信操作在不同的主機(jī)和進(jìn)程之間轉(zhuǎn)發(fā)進(jìn)行。

2 Java中輸入/輸出流概念

過(guò)濾流DataInputStream 和DataOutputStream 除了分別作為 FilterInputStream 和 FilterOutputStream的子類(lèi)外,還分別實(shí)現(xiàn)了接口DataInput 和DataOutput。接口DataInput 中定義的方法,主要包括從流中讀取基本類(lèi)型的數(shù)據(jù)、讀取一行數(shù)據(jù)、或者讀取指定長(zhǎng)度的字節(jié)數(shù),如 readBoolean()readInt()、readLine()、readFully()等。

接口 DataOutput中定義的方法主要是向流中寫(xiě)入基本類(lèi)型的數(shù)據(jù)或者寫(xiě)入一定長(zhǎng)度的字節(jié)數(shù)組,如writeChar()、writeDouble() DataInputStream可以從所連接的輸入流中讀取與機(jī)器無(wú)關(guān)的基本類(lèi)型數(shù)據(jù),用以實(shí)現(xiàn)一種獨(dú)立于具體平臺(tái)的輸入方式;DataInputStream 可以向所連接的輸出流寫(xiě)入基本類(lèi)型的數(shù)據(jù)。

3 客戶機(jī)/服務(wù)器通信的實(shí)現(xiàn)

3.1 客戶端的編程流程:

1、打開(kāi)Socket,新建一個(gè)套接字;

2、為套接字建立一個(gè)輸入和輸出流;

3、根據(jù)服務(wù)器協(xié)議從套接字讀入或向套接字寫(xiě)入;

4、清除套接字和輸入/輸出流;

3.2 服務(wù)器端的編程流程:

1、打開(kāi)Server Socket,創(chuàng)建一個(gè)服務(wù)器型套接字和一個(gè)普通套接字,服務(wù)器型套接字在指定端口為客戶端請(qǐng)求的Socket 服務(wù);

2、使用ServerSocket類(lèi)的accept()方法使服務(wù)器型套接字處于監(jiān)聽(tīng)狀態(tài)并把監(jiān)聽(tīng)結(jié)果返回給普通套接字;

3、為該普通套接字創(chuàng)建輸入和輸出流;

4、從輸入和輸出流中讀入或?qū)懭胱止?jié)流,進(jìn)行相應(yīng)的處理,并將結(jié)果返回給客戶端;

5、在客戶端和服務(wù)器工作結(jié)束后關(guān)閉所有的對(duì)象,如服務(wù)器型的套接字,普通套接字,輸入和輸出流。

正是由于Java系統(tǒng)具有基于Socket的靈活通信機(jī)制,因而其應(yīng)用程序能自由地打開(kāi)和訪問(wèn)網(wǎng)絡(luò)上的對(duì)象,就象在本地文件系統(tǒng)中一樣。

4 程序代碼清單

服務(wù)器端程序負(fù)責(zé)與客戶端通信import java.io.*;

import java.net.*;

import java.lang.*;

import T2;

class ThreadEchoHandler extends Thread //創(chuàng)建線程

{

T2 theT2=new T2();

Socket incoming;

int counter;

ThreadEchoHandler(Socket i,int c)

{ incoming=i;

counter=c; }

public void run()

{ try

{

DataInputStream in=new

DataInputStream(incoming.getInputStream());

DataOutputStream out=new

DataOutputStream(incoming.get Out put Stream());

System.out.println ("hello");

boolean done=false;

while(!done)

{ String aa="";

String str=in.readUTF();

//從客戶端得到字符串

//在此加入各自的服務(wù)程序

System.out.println (str);

theT2.pass(str); //解碼

theT2.tongji();

//修改監(jiān)控庫(kù)中的信息

aa=theT2.guan();

//操縱數(shù)據(jù)庫(kù)

System.out.println ("string z is:"+aa);

if(aa.compareTo("null")!=0 )//若是查詢數(shù)據(jù)庫(kù),返回查詢后的結(jié)果

{

//若不是查詢數(shù)據(jù)庫(kù),不向客戶端輸出信息

out.writeUTF(aa);

out.flush(); }

}//while

incoming.close(); //線程關(guān)閉

}//try

catch(IOException e)

{System.out.println(e);}

}//end run

}

//----------------------------------------

class S

{

public static void main(String[] args)

{

int i=1;

try

{

ServerSocket s=new ServerSocket(1111);

for(;;)

{

Socket incoming=s.accept();

System.out.println("connect: "+i);

new

ThreadEchoHandler(incoming,i).start();

i++;

}

}

catch(Exception e)

{ System.out.println(e); }

}

}

客戶端通信應(yīng)用程序 Echo.java

import java.io.*;

import java.net.*;

import java.awt.*;

import java.applet.*;

public class Echo extends Applet

{

TextArea ta;

Socket echoSocket;

DataOutputStream os;

DataInputStream is;

String Line;

public void init()

{

setBackground(Color.white);

ta=new TextArea(5,80);

ta.setEditable(false);

add(ta);

try

{echoSocket=new Socket("10.102.4.41",1111);}

//與服務(wù)器建立連接

catch(IOException e)

{System.out.println("error");}

}

public void st(String stri) //發(fā)送字符串的 方法

{

try

{ DataOutputStream os=new

DataOutputStream(echoSocket.getOutputStream());

DataInputStream is=new

DataInputStream(echoSocket.getInputStream());

os.writeUTF(""+ stri );

//向服務(wù)器輸送string

os.flush();

}

catch(IOException e)

{System.out.println(" error:"+e); }

}

public String st1() //接收字符串的方法

{

String Line="";

try

{ DataOutputStream os=new

DataOutputStream(echoSocket.getOutputStream());

DataInputStream is=new

DataInputStream(echoSocket.getInputStream());

Line=is.readUTF();

//從服務(wù)器讀來(lái)的信息

ta.appendText(""+Line);

//在文本域中輸出信息

}

catch(IOException e)

{System.out.println(" error:"+e); }

return Line;

}

}

5 研究小結(jié)

在建立 Socket連接時(shí),兩端的端口號(hào)必須設(shè)為一致,否則建立不了連接。服務(wù)器端必須有主機(jī)IP地址或主機(jī)名參數(shù)。連接建立好之后應(yīng)確定輸入和輸出流。起初程序中用的是DataInputStream和PrintStream,結(jié)果只能傳輸英文 ,傳輸中文時(shí)產(chǎn)生亂碼,將PrintStream改為DataOutput Stream,使用readUTF()和writeUTF()方法后,中文傳輸問(wèn)題得到解決。如果一個(gè)使用某端口的程序沒(méi)有關(guān)閉,另一個(gè)程序就不能使用這個(gè)端口。

[1]廖雷,等.Java程序設(shè)計(jì)教程[M].北京:中國(guó)電力出版社,2003.

[2]張立,等.基于Client/Server模式的數(shù)據(jù)庫(kù)應(yīng)用軟件的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用研究,1999,(4).

TP311

A

1673-2219(2011)04-0070-03

2010-4-29

謝智明(1971-),湖南祁陽(yáng)人,碩士,計(jì)算機(jī)軟件與技術(shù)系統(tǒng)分析師,研究方向?yàn)橛?jì)算機(jī)及應(yīng)用。

(責(zé)任編校:何俊華)

猜你喜歡
機(jī)制
構(gòu)建“不敢腐、不能腐、不想腐”機(jī)制的思考
自制力是一種很好的篩選機(jī)制
文苑(2018年21期)2018-11-09 01:23:06
“三項(xiàng)機(jī)制”為追趕超越蓄力
丹鳳“四個(gè)強(qiáng)化”從嚴(yán)落實(shí)“三項(xiàng)機(jī)制”
保留和突破:TPP協(xié)定ISDS機(jī)制中的平衡
定向培養(yǎng) 還需完善安置機(jī)制
破除舊機(jī)制要分步推進(jìn)
氫氣對(duì)缺血再灌注損傷保護(hù)的可能機(jī)制
注重機(jī)制的相互配合
打基礎(chǔ) 抓機(jī)制 顯成效
主站蜘蛛池模板: 欧美日韩理论| 五月婷婷中文字幕| 中文字幕不卡免费高清视频| 毛片在线看网站| 欧美一级高清视频在线播放| 亚洲欧美日韩精品专区| 茄子视频毛片免费观看| 国产福利不卡视频| 国产欧美日本在线观看| 71pao成人国产永久免费视频 | 国产精品露脸视频| 欧美日本视频在线观看| 又黄又湿又爽的视频| 精品1区2区3区| 毛片一区二区在线看| 日本欧美午夜| 72种姿势欧美久久久大黄蕉| 国产精品久久久精品三级| 国产精品2| 伊人丁香五月天久久综合| 91人妻在线视频| 亚洲中字无码AV电影在线观看| 国产不卡在线看| 91麻豆精品国产高清在线| 精品成人免费自拍视频| 亚洲 日韩 激情 无码 中出| 一级毛片中文字幕| 天天摸天天操免费播放小视频| 日韩亚洲综合在线| 亚洲日韩日本中文在线| lhav亚洲精品| 四虎在线高清无码| 亚洲人精品亚洲人成在线| 极品国产在线| 亚洲中文字幕在线精品一区| 99视频精品全国免费品| 美女一级毛片无遮挡内谢| 久久综合九色综合97网| 国产欧美综合在线观看第七页| 亚洲乱码在线播放| 视频一区视频二区日韩专区 | 国产黄在线免费观看| 香蕉综合在线视频91| 国产无码在线调教| 久久久久青草线综合超碰| 99热最新在线| 国产精品99r8在线观看| 欧美成一级| 国产麻豆永久视频| 亚洲精品无码AⅤ片青青在线观看| 亚洲综合第一区| 久久成人免费| 特级aaaaaaaaa毛片免费视频 | 98超碰在线观看| 国产成人91精品免费网址在线 | 成人国产精品一级毛片天堂| 一级毛片在线播放免费观看| 伊人久久精品无码麻豆精品 | 一本一道波多野结衣一区二区 | 91久久精品日日躁夜夜躁欧美| 午夜精品国产自在| 久久一本精品久久久ー99| 在线中文字幕日韩| 22sihu国产精品视频影视资讯| 亚洲国产综合第一精品小说| 亚洲第一福利视频导航| 国产成人盗摄精品| 亚洲精品手机在线| 欧美精品不卡| 久久黄色小视频| 国产精品香蕉在线| 日本妇乱子伦视频| 欧美激情视频二区三区| 国产综合亚洲欧洲区精品无码| 国内精品自在自线视频香蕉| 91po国产在线精品免费观看| 国产成人精品亚洲77美色| 四虎永久在线精品国产免费| 自拍偷拍欧美日韩| 青青久在线视频免费观看| 亚洲第一在线播放| 国产美女无遮挡免费视频|