Java Socket程式設計基礎
1.簡述:
Java Socket程式設計時對於TCP/IP 協議層的通訊進行封裝,簡化了相關的一些操作。//待續
2.Socket 通訊時序圖
3.Socket 資料流的互動
4.單客戶端和伺服器通訊的簡單例子:
伺服器端程式碼:
[java] view plain copy print?- package com.lou.socket;
- import java.io.BufferedReader;
- import java.io.IOException;
-
import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.InetSocketAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- publicclass TestServer {
- publicstaticvoid main(String[] args) throws IOException {
- //1.建立一個Server Socket
- ServerSocket server = new ServerSocket();
-
// 2.繫結監聽指定的埠
- InetSocketAddress address = new InetSocketAddress("localhost",18824);
- server.bind(address);
- // 3.接受此埠的通訊請求
- Socket socket = server.accept();
- // 在沒有客戶端對其進行相應前,下面的程式碼不會執行,將一直阻塞
- //伺服器端的輸出流和輸入流獲取
-
BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- PrintWriter writer = new PrintWriter(socket.getOutputStream(),true);
- //來自鍵盤的輸入資料
- BufferedReader keyword=new BufferedReader(new InputStreamReader(System.in));
- while(true)
- {
- if(reader.ready())
- {
- // 捕捉來自客戶端發來的訊息 客戶端沒有發訊息過來時,reader.ready() 為false, 迴圈檢測是否有資料,有測打印出來
- String info = reader.readLine();
- System.out.println("Client:"+info);
- }
- if(keyword.ready())
- {
- //捕獲來自伺服器端另外一個輸入流 : 鍵盤的資料。如果有資料,則傳送給客戶端
- String test = keyword.readLine();
- writer.println(test);
- System.out.println("Server:"+test);
- }
- }
- }
- }
客戶端程式碼:
- import java.io.BufferedReader;
- import java.io.IOException;
- import java.io.InputStreamReader;
- import java.io.PrintWriter;
- import java.net.InetSocketAddress;
- import java.net.Socket;
- import java.net.UnknownHostException;
- publicclass ClientSocket {
- publicstaticvoid main(String[] args) throws UnknownHostException, IOException {
- //1.建立一個Server Socket
- Socket socket = new Socket();
- // 2.連線到指定的 server socket,指定IP 和埠號
- InetSocketAddress address = new InetSocketAddress("localhost",18824);
- socket.connect(address);
- // 3.連線成功後,獲取相應的輸入輸出流,進行資料互動
- BufferedReader br = new BufferedReader(new InputStreamReader(socket.getInputStream()));
- PrintWriter pw = new PrintWriter(socket.getOutputStream(),true);
- BufferedReader keyword=new BufferedReader(new InputStreamReader(System.in));
- while(true)
- {
- // 捕捉來自伺服器端發來的訊息 伺服器端沒有發訊息過來時,br.ready() 為false, 迴圈檢測是否有資料,有測打印出來
- if(br.ready())
- {
- String info = br.readLine();
- System.out.println("Server:"+info);
- }
- //捕獲來自伺服器端另外一個輸入流 : 鍵盤的資料。如果有資料,則傳送給伺服器端
- if(keyword.ready())
- {
- String test = keyword.readLine();
- pw.println(test);
- System.out.println("Client:"+test);
- }
- }
- }
- }
執行結果:
5.Socket 多客戶端單伺服器之間的通訊:
上面的這個例子只能支援一個伺服器端和一個客戶端的通訊,因為 客戶端內 server.accept() 方法只執行了一次,只能返回一個Socket 連線。可以在服務端接受多個Socket,這時候的Socket應當放在一個執行緒裡,讓它有生命週期,來使用客戶端和服務端的自由通訊。
[java] view plain copy print?- package com.lou.socket;
- import java.io.IOException;
- import java.net.InetSocketAddress;
- import java.net.ServerSocket;
- import java.net.Socket;
- publicclass TestServer {
- publicstaticvoid main(String[] args) throws IOException {
- //1.建立一個Server Socket
- ServerSocket server = new ServerSocket();
-
相關推薦
【Socket】Java Socket程式設計基礎及深入講解
Socket是Java網路程式設計的基礎,瞭解還是有好處的, 這篇文章主要講解Socket的基礎程式設計。Socket用在哪呢,主要用在程序間,網路間通訊。本篇比較長,特別做了個目錄: 一、Socket通訊基本示例 這種模式是基礎,必須掌
JAVA Socket程式設計基礎(轉載)
Java Socket程式設計 對於Java Socket程式設計而言,有兩個概念,一個是ServerSocket,一個是Socket。服務端和客戶端之間通過Socket建立連線,之後它們就可以進行通訊了。首先ServerSocket將在服務端監聽某個埠,當發現客
Java Socket程式設計基礎
1.簡述: Java Socket程式設計時對於TCP/IP 協議層的通訊進行封裝,簡化了相關的一些操作。//待續 2.Socket 通訊時序圖 3.Socket 資料流的互動 4.單客戶端和伺服器通訊的簡單例子:
【Socket】Java Socket程式設計基礎及深入講解(轉載)
Socket是Java網路程式設計的基礎,瞭解還是有好處的, 這篇文章主要講解Socket的基礎程式設計。Socket用在哪呢,主要用在程序間,網路間通訊。本篇比較長,特別做了個目錄: 一、Socket通訊基本示例 這種模式是基礎,必須掌握,後
Java基本程式設計——基礎語法
1.資料型別 1.1資料型別分為兩種:基本資料型別和引用資料型別 1.1—1 基本資料型別有8種: 四種整型(byte,int , short , long) 兩種浮點型(float,double) 一種字元型(char) 1.1—2 引用資料型別 :類(class),介面(i
Java網路程式設計基礎部分
轉載:文章來源 網路通訊協議 網路通訊協議有很多種,目前應用最廣泛的是TCP/IP協議(Transmission Control Protocal/Internet Protoal傳輸控制協議/英特網互聯協議),它是一個包括TCP協議和IP協議,UDP(User Datagram Protoco
java Socket程式設計呼叫ServerSocket的close方法
做一個簡單的聊天系統伺服器 伺服器中有一個輸入埠的控制元件,兩個JButton按鈕“停止”和“執行” 點選“執行”按鈕,啟動伺服器 點選“停止”按鈕,呼叫ServerSocket的close方法,停止伺服器。 上部分程式碼: btn_ok.setText(
第2章 java並行程式設計基礎知識清單
2.2、初始執行緒:執行緒的基本操作 1、程序執行緒區別。P29 2、執行緒生命週期,waiting, time_waiting狀態區別:new, runnable, blocked, waiting, time_waiting, terminated。P31,32 3、start()方
java Socket程式設計之TCP基本原理
通訊原理: 1.伺服器程式建立一個ServerSocket,呼叫accept方法等待客戶機來連線。 2.客戶端程式建立一個Socket,請求與伺服器建立連線。 3.伺服器接收客戶機的連線請求,同時建立一個新的Socket與客戶端建立連線。伺服器繼續等待新的請求。 關鍵類: ServerS
linux下socket程式設計基礎示例
本文主要用於記錄(因為有道雲容易丟失資料),程式碼並不規範,所有的內容都解除安裝main()函式裡面了,主要目的是為了方便自己理清流程。 服務端的程式碼: #include<unistd.h> #include<sys/types.h> #incl
java網路程式設計基礎
1.netstat -ano 檢視當前計算機所有協議的通訊狀態,包括協議名,當前計算機地址,其他計算機的地址,狀態:PID 2.netstat -ano | findstr 埠號 檢視對應的埠號是否被佔用,如果沒有佔用,沒有訊息輸出,如果有訊息輸出,代表該埠被佔用
併發-Java併發程式設計基礎
Java併發程式設計基礎 併發 在電腦科學中,併發是指將一個程式,演算法劃分為若干個邏輯組成部分,這些部分可以以任何順序進行執行,但與最終順序執行的結果一致。併發可以在多核作業系統上顯著的提高程式執行速度。 併發與並行聯絡與區別 這裡參考ErLang之父的解釋,ErLang之父談到了如何向一個5歲小孩解釋併發
Java網路程式設計基礎篇
一、前言 網路通訊在系統互動中是必不可少的一部分,無論是面試還是工作中都是繞不過去的一部分,本節我們來談談Java網路程式設計中的一些知識,本chat內容如下: 網路通訊基礎知識,剖析網路通訊的本質和需要注意的點 使用Java BIO阻塞套接字 實現簡單TCP
《Java併發程式設計的藝術》第4章 Java併發程式設計基礎
Java誕生時就選擇了內建對多執行緒的支援 作業系統執行一個程式時,會為其建立一個程序。 執行緒是作業系統排程的最小單元,都有各自的計數器、堆疊、區域性變數。能訪問共享的記憶體變數。CPU在他們上高速切換,讓人感覺在同步執行。 執行緒會被分到若干時間片,時間片用
Java語言程式設計基礎篇 day01
第1章 計算機程式和Java概述 1.1 什麼是計算機 計算機包括硬體(hardware)和軟體(software)兩部分,一般來說硬體包括計算機中可以看見的部分,而軟體提供看不見的指令,這些指令控制硬體並且使得硬體完成特定的任務。一臺計算機中央處理器
【演算法視覺化】第一章 Java GUI程式設計基礎
1.1 使用JFrame import javax.swing.*; import java.awt.*; public class Main { public static void main(String[] args) { EventQu
Java併發程式設計基礎
4.1 執行緒簡介 4.1.1 什麼是執行緒 現代作業系統在執行一個程式時,會為其建立一個程序。例如,啟動一個Java程式,作業系統就會建立一個Java程序。現代作業系統排程的最小單元是執行緒,也叫輕量級程序(LightWeight Process),在一
Java網路程式設計——基礎知識
網路基礎知識 計算機網路提供的功能: 資源共享; 資訊傳輸與集中處理; 均衡負荷與分佈處理; 綜合資訊服務; 通訊協議 實現通訊的約定,負責對傳輸速率、傳輸程式碼、程式碼結構、傳輸控制步驟、出錯控制等制定處理標準。 通訊協議的組成:
Java併發程式設計基礎//程序:每個程序都有獨立的程式碼和資料空間(程序上下文),程序間的切換開銷比較大,一個程序包含1-n個執行緒 //執行緒:同一類執行緒共享程式碼和資料空間,每個執行緒擁有獨立的執行棧和程式計
1.實現多執行緒的兩種方式: (1)繼承Thread類; (2)實現Runnable介面 //程序:每個程序都有獨立的程式碼和資料空間(程序上下文),程序間的切換開銷比較大,一個程序包含1-n個執行緒 //執行緒:同一類執行緒共享程式碼和資料空間,每個執行緒擁有獨立的執行
Java Socket程式設計(五) 簡單的WEB伺服器
簡單的WEB伺服器一個簡單的WEB伺服器將由列表9.2這樣構建.當然,還必須要對方法和迴應事件進行改進.簡單的伺服器不會分析和儲存請求頭.新的WEB伺服器將分析和儲存請求,為以後的處理作準備.為了達到這個目的,你必須有一個包含HTTP請求的類.HTTPrequest類列表9.5列出了一個完整的HTTPrequ