java socket編程實例代碼講解
1、所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個通信鏈的句柄。應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請求或者應(yīng)答網(wǎng)絡(luò)請求。
操作java socket時用到的最多的三個方法為:
accept():主要用于服務(wù)器端產(chǎn)生“阻塞”,等待客戶端的鏈接請求,并且返回一個客戶端的Socket實例;
getInputStream():方法主要用來獲得網(wǎng)絡(luò)連接輸入,同時返回一個InputStream對象實例;
getOutputStream():方法和上面的getInputStream相反。
2、一般要建立Java的Socket連接,應(yīng)首先明確服務(wù)器端和客戶端,服務(wù)器端使用ServerSocket監(jiān)聽指定的端口,使用accept等待客戶端請求,鏈接鏈接,開始會話、完成會話后,關(guān)閉鏈接。(注意,一般socket的關(guān)閉都應(yīng)該是服務(wù)器端來進行的,后面說);客戶端使用Socket對網(wǎng)絡(luò)中的某個服務(wù)器的某個端口發(fā)出鏈接請求,連接成功,開始會話,會話完成,Socket關(guān)閉。
2、示例代碼:
服務(wù)器端:
package com.icer.server;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
/**
* Server
*
* @author Icer
*
*/
public class Server {
private ServerSocket ss;
private Socket s;
private BufferedReader br;
private PrintWriter pw;
public Server() {
try {
ss = new ServerSocket(10000);
System.out.println("Server is starting...");
s = ss.accept();
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
pw = new PrintWriter(s.getOutputStream(),true);
String line = br.readLine();
System.out.println(line);
pw.println("your word is:" + line);
//pw.println("helloworld");
br.close();
pw.close();
} catch (IOException ie) {
ie.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
new Server();
}
}
客戶端:
package com.icer.client;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
/**
* Client
* @author Icer
*
*/
public class Client {
private Socket s;
private BufferedReader br;
//private BufferedReader line;
private PrintWriter pw;
private String line = "";
public Client() {
try{
s = new Socket("127.0.0.1",10000);
pw = new PrintWriter(s.getOutputStream(),true);
br = new BufferedReader(new InputStreamReader(s.getInputStream()));
pw.println("hello");
line = br.readLine();
System.out.println(line);
br.close();
pw.close();
}catch(IOException ie){
ie.printStackTrace();
}
}
public static void main(String[] args) throws Exception {
new Client();
}
}
- WebSocket(java版)服務(wù)核心實例代碼
- Java Socket編程實現(xiàn)群聊實踐案例
- Java通過ServerSocket與Socket實現(xiàn)通信過程
- java網(wǎng)絡(luò)編程之socket網(wǎng)絡(luò)編程示例(服務(wù)器端/客戶端)
- 使用Java和WebSocket實現(xiàn)網(wǎng)頁聊天室實例代碼
- java使用Socket類接收和發(fā)送數(shù)據(jù)
- 簡單的java socket客戶端和服務(wù)端示例
- Java后端Tomcat實現(xiàn)WebSocket實例教程
- 教你怎么使用Java實現(xiàn)WebSocket
- Java Socket通信(一)之客戶端程序 發(fā)送和接收數(shù)據(jù)
- 基于Java Socket實現(xiàn)一個簡易在線聊天功能(一)
- Java網(wǎng)絡(luò)編程:Socket套接字、TCP和UDP協(xié)議以及Java高性能實戰(zhàn)
相關(guān)文章
springboot全局異常處理方式@ControllerAdvice和@ExceptionHandler
文章總結(jié)了個人在處理全局異常處理時的經(jīng)驗,包括使用`StatusEnum`來定義狀態(tài)碼,旨在為讀者提供參考,并鼓勵大家支持腳本之家2024-11-11
spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例
本篇文章主要介紹了spring mvc4的日期/數(shù)字格式化、枚舉轉(zhuǎn)換示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-01-01
Java 中Comparable和Comparator區(qū)別比較
本文,先介紹Comparable 和Comparator兩個接口,以及它們的差異;接著,通過示例,對它們的使用方法進行說明2013-09-09
SpringBoot使用swagger生成api接口文檔的方法詳解
在之前的文章中,使用mybatis-plus生成了對應(yīng)的包,在此基礎(chǔ)上,我們針對項目的api接口,添加swagger配置和注解,生成swagger接口文檔,需要的可以了解一下2022-10-10
在Java中使用redisTemplate操作緩存的方法示例
這篇文章主要介紹了在Java中使用redisTemplate操作緩存的方法示例,在Redis中可以存儲String、List、Set、Hash、Zset。感興趣的可以了解一下2019-01-01
Spring?Cloud?Gateway服務(wù)網(wǎng)關(guān)限流問題及解決
這篇文章主要介紹了Spring?Cloud?Gateway服務(wù)網(wǎng)關(guān)限流問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-04-04
SpringBoot實現(xiàn)WebSocket服務(wù)并讓客戶端實時接收
使用SpringBoot和WebSocket可創(chuàng)建實時消息推送服務(wù),首先添加WebSocket依賴至pom.xml,配置WebSocket端點和邏輯處理器,通過WebSocketHandler處理消息,使用AnnouncementController模擬消息推送,支持HTML和微信小程序客戶端接收消息,感興趣的可以了解一下2024-10-10

