熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

一個最簡單的Socket通信例子

2013-11-23 19:43:16  來源: Java高級技術 

  所謂socket通常也稱作套接字用於描述IP地址和端口是一個通信鏈的句柄應用程序通常通過套接字向網絡發出請求或者應答網絡請求        Socket和ServerSocket類庫位於包中ServerSocket用於服務器端Socket是建立網絡連接時使用的在連接成功時應用程序兩端都會產生一個Socket實例操作這個實例完成所需的會話對於一個網絡連接來說套接字是平等的並沒有差別不因為在服務器端或在客戶端而產生不同級別不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的

  下面給出一個最簡單的Socket通信的例子供初學者參考 

  服務器端ServerDemojava

  

  package comlanbersocket;

  import javaioDataInputStream;
import javaioDataOutputStream;
import javaioIOException;
import ServerSocket;
import Socket;

  public class ServerDemo {

  /**
     * 注意Socket的發送與接收是需要同步進行的即客戶端發送一條信息服務器必需先接收這條信息
     *      而後才可以向客戶端發送信息否則將會有運行時出錯
     * @param args
     */
    public static void main(String[] args) {
        ServerSocket ss = null;
        try {
            ss = new ServerSocket();
            //服務器接收到客戶端的數據後創建與此客戶端對話的Socket
            Socket socket = ssaccept();
            //用於向客戶端發送數據的輸出流
            DataOutputStream dos = new DataOutputStream(socketgetOutputStream());
            //用於接收客戶端發來的數據的輸入流
            DataInputStream dis = new DataInputStream(socketgetInputStream());
            Systemoutprintln(服務器接收到客戶端的連接請求 + disreadUTF());
            //服務器向客戶端發送連接成功確認信息
            doswriteUTF(接受連接請求連接成功!);
            //不需要繼續使用此連接時關閉連接
            socketclose();
            ssclose();
        } catch (IOException e) {
            eprintStackTrace();
        }
    }

  客戶端ClientDemojava

  

  package comlanbersocket;

  import javaioDataInputStream;
import javaioDataOutputStream;
import javaioIOException;
import javaioOutputStream;
import Socket;
import UnknownHostException;

  public class ClientDemo {

  /**
     * @param args
     */
    public static void main(String[] args) {
        Socket socket = null;
        try {
            socket = new Socket(localhost);
            //獲取輸出流用於客戶端向服務器端發送數據
            DataOutputStream dos = new DataOutputStream(socketgetOutputStream());
            //獲取輸入流用於接收服務器端發送來的數據
            DataInputStream dis = new DataInputStream(socketgetInputStream());
            //客戶端向服務器端發送數據
            doswriteUTF(我是客戶端請求連接!);
            //打印出從服務器端接收到的數據
            Systemoutprintln(disreadUTF());
            //不需要繼續使用此連接時記得關閉哦
            socketclose();
        } catch (UnknownHostException e) {
            eprintStackTrace();
        } catch (IOException e) {
            eprintStackTrace();
        }
    }

  }


From:http://tw.wingwit.com/Article/program/Java/gj/201311/27357.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.