socket 服務器端與客戶端簡單通信

服務器端:
java

package com.lanber.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ServerDemo {

    /**
     * 注意:Socket的發送與接收是須要同步進行的,即客戶端發送一條信息,服務器必需先接收這條信息,
     *      然後才能夠向客戶端發送信息,不然將會有運行時出錯。
     * @param args
     */
    public static void main(String[] args) {
        ServerSocket ss = null;
        try {
            ss = new ServerSocket(8888);
            //服務器接收到客戶端的數據後,建立與此客戶端對話的Socket
            Socket socket = ss.accept();
            //用於向客戶端發送數據的輸出流
            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
            //用於接收客戶端發來的數據的輸入流
            DataInputStream dis = new DataInputStream(socket.getInputStream());
            System.out.println("服務器接收到客戶端的鏈接請求:" + dis.readUTF());
            //服務器向客戶端發送鏈接成功確認信息
            dos.writeUTF("接受鏈接請求,鏈接成功!");
            //不須要繼續使用此鏈接時,關閉鏈接
            socket.close();
            ss.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

客戶端:
服務器

package com.lanber.socket;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class ClientDemo {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Socket socket = null;
        try {
            socket = new Socket("localhost",8888);
            //獲取輸出流,用於客戶端向服務器端發送數據
            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
            //獲取輸入流,用於接收服務器端發送來的數據
            DataInputStream dis = new DataInputStream(socket.getInputStream());
            //客戶端向服務器端發送數據
            dos.writeUTF("我是客戶端,請求鏈接!");
            //打印出從服務器端接收到的數據
            System.out.println(dis.readUTF());
            //不須要繼續使用此鏈接時,記得關閉哦
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}
相關文章
相關標籤/搜索