新聞中心
什么是Java socket套接字呢?這個(gè)問(wèn)題在接下來(lái)的文章中就會(huì)向大家有所幫助。其實(shí)有很多的時(shí)候有關(guān)的代碼還是需要我們從理論中尋找有關(guān)的問(wèn)題,希望大家有所幫助。

在大荔等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供網(wǎng)站制作、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站開(kāi)發(fā),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,成都全網(wǎng)營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站建設(shè),大荔網(wǎng)站建設(shè)費(fèi)用合理。
所謂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ì)話。對(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)完成的。 #t#
重要的Java 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ì)話產(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ì)象使用。
如何開(kāi)發(fā)一個(gè)Server-Client模型的程序
Java socket套接字開(kāi)發(fā)原理:
服務(wù)器,使用ServerSocket監(jiān)聽(tīng)指定的端口,端口可以隨意指定(由于1024以下的端口通常屬于保留端口,在一些操作系統(tǒng)中不可以隨意使用,所以建議使用大于1024的端口),等待客戶(hù)連接請(qǐng)求,客戶(hù)連接后,會(huì)話產(chǎn)生;在完成會(huì)話后,關(guān)閉連接。
客戶(hù)端,使用Socket對(duì)網(wǎng)絡(luò)上某一個(gè)服務(wù)器的某一個(gè)端口發(fā)出連接請(qǐng)求,一旦連接成功,打開(kāi)會(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);
- while (true)
- {
- socket = ss.accept();
- in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- out = new PrintWriter(socket.getOutputStream(),true);
- String line = in.readLine();
- out.println("you input is :" + line);
- out.close();
- in.close();
- socket.close();
- }
- ss.close();
- }
- catch (IOException e)
- {}
- }
- public static void main(String[] args)
- {
- new Server();
- }
- }
這個(gè)程序建立了一個(gè)服務(wù)器,它一直監(jiān)聽(tīng)10000端口,等待用戶(hù)連接。在建立連接后給客戶(hù)端返回一段信息,然后結(jié)束會(huì)話。這個(gè)程序一次只能接受一個(gè)客戶(hù)連接。
{建立客戶(hù)端}
- import java.io.*;
- import java.net.*;
- public class Client
- {
- Socket socket;
- BufferedReader in;
- PrintWriter out;
- public Client()
- {
- try
- {
- socket = new Socket("xxx.xxx.xxx.xxx", 10000);
- in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- out = new PrintWriter(socket.getOutputStream(),true);
- BufferedReader line = new BufferedReader(new InputStreamReader(System.in));
- out.println(line.readLine());
- line.close();
- out.close();
- in.close();
- socket.close();
- }
- catch (IOException e)
- {}
- }
- public static void main(String[] args)
- {
- new Client();
- }
- }
這個(gè)客戶(hù)端連接到地址為xxx.xxx.xxx.xxx的服務(wù)器,端口為10000,并從鍵盤(pán)輸入一行信息,發(fā)送到服務(wù)器,然后接受服務(wù)器的返回信息,最后結(jié)束會(huì)話。以上就是對(duì)Java socket套接字的詳細(xì)介紹。
文章題目:Java socket套接字如何建立自身服務(wù)器
本文鏈接:http://fisionsoft.com.cn/article/ccehsej.html


咨詢(xún)
建站咨詢(xún)
