Server Socket通信簡單的實例分析
Server Socket通信一直在不斷的進行相關的測試,在不斷的使用中有很多的問題存在,其實有不少的問題在源代碼中就能找打答案。所謂Server Socket通信通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。應用程序通常通過"套接字"向網絡發出請求或者應答網絡請求。
Socket和ServerSocket類庫位于java.net包中。Server Socket用于服務器端,Server Socket通信是建立網絡連接時使用的。在 連接成功時,應用程序兩端都會產生一個Socket實例,操作這個實例,完成所需的會話。對于一個網絡連接來說,套接字是平等的,并沒有差別,不因為在服 務器端或在客戶端而產生不同級別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。
下面給出一個最簡單的Server Socket通信的例子供初學者參考:
服務器端:ServerDemo.java
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();
- }
- }
- }
Server Socket通信客戶端:ClientDemo.java
Java代碼
- 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();
- }
- }
- }
以上就是對Server Socket通信的詳細代碼介紹,希望大家找到了自己需要的。
【編輯推薦】