簡(jiǎn)單的java socket客戶端和服務(wù)端示例
客戶端
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class MyClient {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("localhost", 10000);
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
PrintWriter out = new PrintWriter(socket.getOutputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
while (true) {
String msg = reader.readLine();
out.println(msg);
out.flush();
if (msg.equals("bye")) {
break;
}
System.out.println(in.readLine());
}
socket.close();
}
}
服務(wù)端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
public class MyServer {
public static void main(String[] args) throws IOException {
ServerSocket server = new ServerSocket(10000);
while (true) {
Socket socket = server.accept();
invoke(socket);
}
}
private static void invoke(final Socket client) throws IOException {
new Thread(new Runnable() {
public void run() {
BufferedReader in = null;
PrintWriter out = null;
try {
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream());
while (true) {
String msg = in.readLine();
System.out.println(msg);
out.println("Server received " + msg);
out.flush();
if (msg.equals("bye")) {
break;
}
}
} catch(IOException ex) {
ex.printStackTrace();
} finally {
try {
in.close();
} catch (Exception e) {}
try {
out.close();
} catch (Exception e) {}
try {
client.close();
} catch (Exception e) {}
}
}
}).start();
}
}
- WebSocket(java版)服務(wù)核心實(shí)例代碼
- Java Socket編程實(shí)現(xiàn)群聊實(shí)踐案例
- Java通過(guò)ServerSocket與Socket實(shí)現(xiàn)通信過(guò)程
- java網(wǎng)絡(luò)編程之socket網(wǎng)絡(luò)編程示例(服務(wù)器端/客戶端)
- 使用Java和WebSocket實(shí)現(xiàn)網(wǎng)頁(yè)聊天室實(shí)例代碼
- java使用Socket類接收和發(fā)送數(shù)據(jù)
- java socket編程實(shí)例代碼講解
- Java后端Tomcat實(shí)現(xiàn)WebSocket實(shí)例教程
- 教你怎么使用Java實(shí)現(xiàn)WebSocket
- Java Socket通信(一)之客戶端程序 發(fā)送和接收數(shù)據(jù)
- 基于Java Socket實(shí)現(xiàn)一個(gè)簡(jiǎn)易在線聊天功能(一)
- Java網(wǎng)絡(luò)編程:Socket套接字、TCP和UDP協(xié)議以及Java高性能實(shí)戰(zhàn)
相關(guān)文章
servlet3新特性_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
這篇文章主要為大家詳細(xì)介紹了servlet3新特性的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07
Java開(kāi)發(fā)微信公眾號(hào)接收和被動(dòng)回復(fù)普通消息
這篇文章主要介紹了Java開(kāi)發(fā)微信公眾號(hào)接收和被動(dòng)回復(fù)普通消息的相關(guān)資料,需要的朋友可以參考下2016-01-01
SpringBoot自定義動(dòng)態(tài)數(shù)據(jù)源的流程步驟
動(dòng)態(tài)數(shù)據(jù)源,本質(zhì)上是把多個(gè)數(shù)據(jù)源存儲(chǔ)在一個(gè)?Map?中,當(dāng)需要使用某一個(gè)數(shù)據(jù)源時(shí),使用?key?獲取指定數(shù)據(jù)源進(jìn)行處理,本文將給大家介紹一下SpringBoot自定義動(dòng)態(tài)數(shù)據(jù)源的流程步驟,需要的朋友可以參考下2024-06-06
整理java讀書(shū)筆記十五之java中的內(nèi)部類
內(nèi)部類是指在一個(gè)外部類的內(nèi)部再定義一個(gè)類。類名不需要和文件夾相同。本文給大家分享java讀書(shū)筆記十五之java中的內(nèi)部類,對(duì)java讀書(shū)筆記相關(guān)知識(shí)感興趣的朋友一起學(xué)習(xí)吧2015-12-12
SpringMvc web.xml配置實(shí)現(xiàn)原理過(guò)程解析
這篇文章主要介紹了SpringMvc web.xml配置實(shí)現(xiàn)原理過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
IntelliJ IDEA編譯提速的兩種配置指南(中性能&高性能)
很多開(kāi)發(fā)者發(fā)現(xiàn),明明電腦配置挺高,IDEA 編譯 Maven 項(xiàng)目依然卡,本文帶大家從原理到實(shí)戰(zhàn),提供 兩套可直接復(fù)制使用的 VM 參數(shù)方案,有需要的小伙伴可以了解下2025-10-10

