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

JAVA語言SOCKET機制的研究

2011-04-08 09:09:03謝智明
湖南科技學院學報 2011年4期
關鍵詞:機制

謝智明

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

JAVA語言SOCKET機制的研究

謝智明

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

本文研究了JAVA語言SOCKET機制,闡述了輸入/輸出流的概念,并應用這一機制實現了C/S模式下網絡通信。

JAVA;網絡;SOCKET

1 Socket 機制

Socket是面向客戶/服務器模型設計的,網絡上的兩個程序通過一個雙向的通訊連接實現數據的交換,這個雙向鏈路的一端稱為一個Socket。 Socket通常用來實現客戶方和服

務方的連接??蛻舫绦蚩梢韵?Socket寫請求,服務器將處理此請求,然后通過Socket將結果返回給用戶。

Socket通信機制提供了兩種通訊方式:有聯接和無聯接方式,分別面向不同的應用需求。使用有聯接方式時,通信鏈路提供了可靠的,全雙工的字節流服務。在該方式下,通信雙方必須創建一個聯接過程并建立一條通訊鏈路,以后的網絡通信操作完全在這一對進程之間進行,通信完畢關閉此聯接過程。使用無聯接方式時其系統開銷比無聯接方式小,但通信鏈路提供了不可靠的數據報服務,不能保證信源所傳輸的數據一定能夠到達信宿。在該方式下,通信雙方不必創建一個聯接過程和建立一條通訊鏈路,網絡通信操作在不同的主機和進程之間轉發進行。

2 Java中輸入/輸出流概念

過濾流DataInputStream 和DataOutputStream 除了分別作為 FilterInputStream 和 FilterOutputStream的子類外,還分別實現了接口DataInput 和DataOutput。接口DataInput 中定義的方法,主要包括從流中讀取基本類型的數據、讀取一行數據、或者讀取指定長度的字節數,如 readBoolean()readInt()、readLine()、readFully()等。

接口 DataOutput中定義的方法主要是向流中寫入基本類型的數據或者寫入一定長度的字節數組,如writeChar()、writeDouble() DataInputStream可以從所連接的輸入流中讀取與機器無關的基本類型數據,用以實現一種獨立于具體平臺的輸入方式;DataInputStream 可以向所連接的輸出流寫入基本類型的數據。

3 客戶機/服務器通信的實現

3.1 客戶端的編程流程:

1、打開Socket,新建一個套接字;

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

3、根據服務器協議從套接字讀入或向套接字寫入;

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

3.2 服務器端的編程流程:

1、打開Server Socket,創建一個服務器型套接字和一個普通套接字,服務器型套接字在指定端口為客戶端請求的Socket 服務;

2、使用ServerSocket類的accept()方法使服務器型套接字處于監聽狀態并把監聽結果返回給普通套接字;

3、為該普通套接字創建輸入和輸出流;

4、從輸入和輸出流中讀入或寫入字節流,進行相應的處理,并將結果返回給客戶端;

5、在客戶端和服務器工作結束后關閉所有的對象,如服務器型的套接字,普通套接字,輸入和輸出流。

正是由于Java系統具有基于Socket的靈活通信機制,因而其應用程序能自由地打開和訪問網絡上的對象,就象在本地文件系統中一樣。

4 程序代碼清單

服務器端程序負責與客戶端通信import java.io.*;

import java.net.*;

import java.lang.*;

import T2;

class ThreadEchoHandler extends Thread //創建線程

{

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();

//從客戶端得到字符串

//在此加入各自的服務程序

System.out.println (str);

theT2.pass(str); //解碼

theT2.tongji();

//修改監控庫中的信息

aa=theT2.guan();

//操縱數據庫

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

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

{

//若不是查詢數據庫,不向客戶端輸出信息

out.writeUTF(aa);

out.flush(); }

}//while

incoming.close(); //線程關閉

}//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); }

}

}

客戶端通信應用程序 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);}

//與服務器建立連接

catch(IOException e)

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

}

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

{

try

{ DataOutputStream os=new

DataOutputStream(echoSocket.getOutputStream());

DataInputStream is=new

DataInputStream(echoSocket.getInputStream());

os.writeUTF(""+ stri );

//向服務器輸送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();

//從服務器讀來的信息

ta.appendText(""+Line);

//在文本域中輸出信息

}

catch(IOException e)

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

return Line;

}

}

5 研究小結

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

[1]廖雷,等.Java程序設計教程[M].北京:中國電力出版社,2003.

[2]張立,等.基于Client/Server模式的數據庫應用軟件的設計與實現[J].計算機應用研究,1999,(4).

TP311

A

1673-2219(2011)04-0070-03

2010-4-29

謝智明(1971-),湖南祁陽人,碩士,計算機軟件與技術系統分析師,研究方向為計算機及應用。

(責任編校:何俊華)

猜你喜歡
機制
構建“不敢腐、不能腐、不想腐”機制的思考
自制力是一種很好的篩選機制
文苑(2018年21期)2018-11-09 01:23:06
“三項機制”為追趕超越蓄力
當代陜西(2018年9期)2018-08-29 01:21:00
丹鳳“四個強化”從嚴落實“三項機制”
當代陜西(2017年12期)2018-01-19 01:42:33
保留和突破:TPP協定ISDS機制中的平衡
定向培養 還需完善安置機制
中國衛生(2016年9期)2016-11-12 13:28:08
破除舊機制要分步推進
中國衛生(2015年9期)2015-11-10 03:11:12
氫氣對缺血再灌注損傷保護的可能機制
注重機制的相互配合
中國衛生(2014年3期)2014-11-12 13:18:12
打基礎 抓機制 顯成效
中國火炬(2014年4期)2014-07-24 14:22:19
主站蜘蛛池模板: 午夜福利视频一区| 日韩无码视频专区| 国产美女精品在线| 青青草国产一区二区三区| 亚洲va在线∨a天堂va欧美va| 欧美精品黑人粗大| 国产精品va免费视频| 久99久热只有精品国产15| 成年av福利永久免费观看| 成人国产精品2021| 亚洲欧美日韩成人高清在线一区| 国内视频精品| 欧美成一级| 一边摸一边做爽的视频17国产| 丁香六月激情婷婷| 国产专区综合另类日韩一区| 亚洲人免费视频| 免费a级毛片视频| 色噜噜狠狠色综合网图区| 婷婷激情五月网| 午夜精品区| 国产一级视频久久| 亚洲日韩高清在线亚洲专区| 欲色天天综合网| 97在线碰| 亚洲天堂自拍| 中文字幕66页| 思思热精品在线8| 亚洲日本中文字幕天堂网| 亚洲电影天堂在线国语对白| 精品無碼一區在線觀看 | 久久人搡人人玩人妻精品一| 91口爆吞精国产对白第三集| 国产午夜福利亚洲第一| 国产黑丝一区| 亚洲中文字幕av无码区| 亚洲男人的天堂久久香蕉网| 欧美午夜久久| 国产精品自拍露脸视频| 久久美女精品国产精品亚洲| 亚洲成在人线av品善网好看| 亚洲第一国产综合| 国产在线专区| 亚洲人免费视频| 中文国产成人久久精品小说| 亚洲第一av网站| 成人年鲁鲁在线观看视频| 日本高清免费一本在线观看 | 99久久精品免费看国产免费软件| 99精品国产高清一区二区| 国产素人在线| 亚洲国产中文欧美在线人成大黄瓜| 婷婷亚洲天堂| 国产精品永久在线| 五月激情婷婷综合| 国产精品女主播| 国产乱视频网站| 亚洲第一区在线| 日本一本在线视频| 四虎在线观看视频高清无码| 性视频一区| 99热这里只有免费国产精品 | 欧美成一级| 有专无码视频| 久久人搡人人玩人妻精品| 黄色三级毛片网站| 一级做a爰片久久毛片毛片| 制服无码网站| 日本亚洲成高清一区二区三区| h视频在线播放| 国产SUV精品一区二区| 亚洲综合狠狠| 久久精品人人做人人爽97| 日韩无码黄色网站| 国产亚洲精品97在线观看| 国产91丝袜| 国产成人高清精品免费| 国产凹凸一区在线观看视频| 538国产在线| 中文字幕在线视频免费| 午夜欧美在线| 国产永久在线视频|