Server Socket通信的實(shí)例分析

    時(shí)間:2024-10-05 11:08:11 SUN認(rèn)證 我要投稿
    • 相關(guān)推薦

    Server Socket通信的實(shí)例分析

      Server Socket 通信一直在不斷的進(jìn)行相關(guān)的測試,在不斷的使用中有很多的問題存在,其實(shí)有不少的問題在源代碼中就能找打答案。所謂Server Socket通信通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。

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

      下面給出一個(gè)最簡單的Server Socket通信的例子供初學(xué)者參考:

      服務(wù)器端:ServerDemo.java

      Java代碼

      1.package com.lanber.socket;

      2.import java.io.DataInputStream;

      3.import java.io.DataOutputStream;

      4.import java.io.IOException;

      5.import java.net.ServerSocket;

      6.import java.net.Socket;

      7.public class ServerDemo {

      8./**

      9.* 注意:Socket的發(fā)送與接收是需要同步進(jìn)行的,即客戶端發(fā)送一條信息,服務(wù)器必需先接收這條信息,

      10.* 而后才可以向客戶端發(fā)送信息,否則將會(huì)有運(yùn)行時(shí)出錯(cuò)。

      11.* @param args

      12.*/

      13.public static void main(String[] args) {

      14.ServerSocket ss = null;

      15.try {

      16.ss = new ServerSocket(8888);

      17.//服務(wù)器接收到客戶端的數(shù)據(jù)后,創(chuàng)建與此客戶端對話的Socket

      18.Socket socket = ss.accept();

      19.//用于向客戶端發(fā)送數(shù)據(jù)的輸出流

      20.DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

      21.//用于接收客戶端發(fā)來的數(shù)據(jù)的輸入流

      22.DataInputStream dis = new DataInputStream(socket.getInputStream());

      23.System.out.println("服務(wù)器接收到客戶端的連接請求:" + dis.readUTF());

      24.//服務(wù)器向客戶端發(fā)送連接成功確認(rèn)信息

      25.dos.writeUTF("接受連接請求,連接成功!");

      26.//不需要繼續(xù)使用此連接時(shí),關(guān)閉連接

      27.socket.close();

      28.ss.close();

      29.} catch (IOException e) {

      30.e.printStackTrace();

      31.}

      32.}

      33.}

      Server Socket通信客戶端:ClientDemo.java

      Java代碼

      34.package com.lanber.socket;

      35.import java.io.DataInputStream;

      36.import java.io.DataOutputStream;

      37.import java.io.IOException;

      38.import java.io.OutputStream;

      39.import java.net.Socket;

      40.import java.net.UnknownHostException;

      41.public class ClientDemo {

      42./**

      43.* @param args

      44.*/

      45.public static void main(String[] args) {

      46.Socket socket = null;

      47.try {

      48.socket = new Socket("localhost",8888);

      49.//獲取輸出流,用于客戶端向服務(wù)器端發(fā)送數(shù)據(jù)

      50.DataOutputStream dos = new DataOutputStream(socket.getOutputStream());

      51.//獲取輸入流,用于接收服務(wù)器端發(fā)送來的數(shù)據(jù)

      52.DataInputStream dis = new DataInputStream(socket.getInputStream());

      53.//客戶端向服務(wù)器端發(fā)送數(shù)據(jù)

      54.dos.writeUTF("我是客戶端,請求連接!");

      55.//打印出從服務(wù)器端接收到的數(shù)據(jù)

      56.System.out.println(dis.readUTF());

      57.//不需要繼續(xù)使用此連接時(shí),記得關(guān)閉哦

      58.socket.close();

      59.} catch (UnknownHostException e) {

      60.e.printStackTrace();

      61.} catch (IOException e) {

      62.e.printStackTrace();

    【Server Socket通信的實(shí)例分析】相關(guān)文章:

    PHP中如何使用socket進(jìn)行通信08-21

    德國留學(xué)申請實(shí)例分析09-28

    PHP對象注入的實(shí)例分析08-27

    JavaScript匿名函數(shù)實(shí)例分析08-03

    PHP socket的配置08-04

    JQuery中serialize()用法實(shí)例分析10-22

    javascript閉包的定義及應(yīng)用實(shí)例分析08-25

    2017考研英語閱讀經(jīng)典實(shí)例分析08-13

    城市濕地景觀生態(tài)設(shè)計(jì)的實(shí)例分析10-26

    托福口語的評分標(biāo)準(zhǔn)及實(shí)例分析08-14

    91久久大香伊蕉在人线_国产综合色产在线观看_欧美亚洲人成网站在线观看_亚洲第一无码精品立川理惠

      一区二区欧美日韩高清免费 | 日本亚洲一本线播放 | 亚洲AV元码天堂一区二区三区 | 最新版天堂资源高清在线 | 日韩欧美涩涩视频在线观看 | 亚洲国产91高清 |